2011-01-25 2 views
26

Я использую RVM для управления средой, установленной Ruby 1.9.2.p136 (я думаю, ее последняя версия.) И Rails 3, создал gemset и запускает bundler. все работает до сих пор но;Rails 3 инициализирует чрезвычайно медленную работу на Ruby 1.9.2

Рельсы активируются очень медленно при выполнении команд, т. Е. Генерируют, уничтожают, грабли и т. Д. Занимает около 30-45 секунд для выполнения команды. Этого никогда не будет, если использовать Ruby Enterprise Edition или Ruby 1.8.7

Почему это происходит. Есть предположения? Работает на Ubuntu 10.10, RVM, Ruby 1.9.2, Rails 3

Спасибо.

+0

Это новое приложение или существующее приложение? –

+0

влияет на новое или существующее приложение. – Harry

+1

Проверено на Sytem Monitor (Ubuntu). Протестировано сейчас с помощью rake db: migrate command его использует% 100 cpu с около 50mb ram – Harry

ответ

3

Попробуйте привязать (в unix), dtruss (на Mac) вашу команду (возможно, нужно «sudo»). Он покажет вам, где процесс тратит свое время. Обратите внимание, где он приостанавливается. Это определенно не нормально.

+0

Я нашел идентификатор процесса экземпляра Ruby, а затем проверен с помощью strace. В журнале процесса много процессов ожидания. «[pid 2204] 04: 26: 08.156009 futex (0x58c1c4, FUTEX_WAIT_PRIVATE, 1015189, {0, 9842003}) = -1 ETIMEDOUT (время ожидания подключения)" – Harry

+0

Так что сетевое IO, может быть, вы обращаетесь к БД через IP? У вас есть правильный dns resolver? Попробуйте переключить все доменные имена на IP-адреса. Вы также можете запустить «netstat -a», чтобы увидеть, к чему/куда он пытается перейти. – Zepplock

+0

В настоящее время Rails работает на localhost (с средой разработки) – Harry

7

Существует поток об этом на Rails-Core - http://groups.google.com/group/rubyonrails-core/browse_thread/thread/88519ef5a53088a1/c01ba447c6dc0de7?lnk=raot

Цитирую Иегуда Кац

«Есть вещи, которые C требуется код делает в 1.9, что медленные вещи вниз Одним из таких примеров является. перепроверив $ LOAD_PATH, чтобы убедиться, что он все расширился на каждый запрос. Это то, что должно быть устранено рубиновым ядром. Я открою билет на redmine, если его уже нет ».

Я также испытываю эту проблему, и проблема $ LOAD_PATH кажется потенциальной причиной. Надеемся, что скоро оно будет исправлено.

+0

Спасибо за информацию – Harry

+1

Однако похоже, что исправление является довольно серьезным исправлением, и это запланировано на 1.9.3, так что кто знает, когда он будет исправлен! [Требовать ошибку производительности] (http://redmine.ruby-lang.org/issues/show/3924) –

Смежные вопросы