Приложение Rails зависает и Ruby использует 100% CPU - PullRequest
1 голос
/ 07 января 2010

У меня на сервере apache2 работает Phusion Passenger. На этой машине у меня есть два виртуальных хоста, каждый из которых выглядит следующим образом (пути для второго виртуального хоста различны ... но другие директивы одинаковы)

ServerName beta.mysite.us DocumentRoot "/ var / www / beta / mysite / public"

<Directory "/var/www/beta/mysite/public">
    RewriteEngine on
    AllowOverride All
    Options FollowSymLinks
</Directory>
# http://www.modrails.com/documentation/Users guide.html
PassengerAppRoot "/var/www/beta/mysite"
RailsEnv development
PassengerMaxPoolSize 6
PassengerDefaultUser mysite
# PassengerHighPerformance does come at a trade off of lack of support for mod_rewrite
PassengerHighPerformance off
RailsSpawnMethod conservative
RailsFrameworkSpawnerIdleTime 0
RailsAppSpawnerIdleTime 0
PassengerPoolIdleTime 300

ErrorLog "/var/log/httpd/mysite-beta-error_log"
CustomLog "/var/log/httpd/mysite-beta-access_log" common

Apache запускается нормально. Я могу перейти к одному из виртуальных хостов, и он будет загружать Rails и работать. Когда я перехожу ко второму виртуальному хосту, появляется процесс ruby ​​(«Rails: / var / www / mysite / current» в соответствии с ps awuxf) и использует 100% CPU. Этот процесс никогда не завершается. На данный момент ни один виртуальный хост не реагирует. Если я уничтожу нарушающий процесс ruby, другой процесс ruby ​​заменит его и использует 100% ЦП. Если я убиваю эти процессы примерно 5-6 раз, то оба виртуальных хоста отвечают, но они каким-то образом запускают одно и то же приложение Rails?!

У меня есть еще один виртуальный хост на этой машине, который не настроен с phusion passenger. У этого никогда не возникает проблем.

Любая помощь / идеи будут высоко оценены!

Ответы [ 5 ]

0 голосов
/ 07 июня 2012

(напоминание моему будущему я)

Я недавно унаследовал приложение Rails 2.3.x / Ruby 1.8.7, работающее на Passenger и Apache2. Я обновил RubyGems со старой версии 1.3.x до 1.6.2 и сразу заметил, что при загрузке пассажира процесс рубиновой обработки достиг 100%. Переход на RubyGems 1.5.3 решил проблему.

0 голосов
/ 08 января 2010

Возможно, у вас есть какой-то код, вызывающий это? У нас есть ряд апач / пассажирских установок. Это скорее что-то с вашим кодом, чем aapache / passenger.

0 голосов
/ 07 января 2010

Я столкнулся с похожими проблемами с phusion passenger, но безуспешно в отладке. Позже я переключился на apache2 + mongrel с mod_proxy. Я видел лучшую стабильность с Nginx, хотя. nginx FTW:)

0 голосов
/ 08 января 2010

Очевидной вещью будет проверка того, что у вас нет непреднамеренных бесконечных циклов или невозможно выполнить условия в любом приложении. Слишком легко найти (: все) случайно на столе, слишком массивном, чтобы уместиться в памяти.

Он немедленно застревает или нужно что-то сделать, чтобы вызвать его? Например, загрузка определенной страницы или не загрузка страницы вообще. В инициализаторе может быть что-то, что вызывает проблемы.

Возможность включить скрипт / консоль - это всегда хороший знак, особенно если вы можете загружать записи. В вашем описании не так много информации. Копирование-вставка вывода 'ps aux' поможет.

0 голосов
/ 07 января 2010

Я бы порекомендовал перейти на nginx

...