Ruby on rails Rails应用程序挂起,Ruby使用100%的CPU

Ruby on rails Rails应用程序挂起,Ruby使用100%的CPU,ruby-on-rails,ruby,apache,apache2,passenger,Ruby On Rails,Ruby,Apache,Apache2,Passenger,我有一台apache2服务器运行Phusion Passenger。在这台机器上,我设置了两个虚拟主机,每个看起来像第二个虚拟主机的路径不同……但是其他指令是相同的 ServerName beta.mysite.us DocumentRoot/var/www/beta/mysite/public <Directory "/var/www/beta/mysite/public"> RewriteEngine on AllowOverride All Optio

我有一台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
阿帕奇开局不错。我可以去一个虚拟主机,它将加载Rails并工作。当我转到第二个virtualhost时,一个ruby进程根据ps awuxf生成Rails:/var/www/mysite/current,并使用100%的CPU。这个过程永远不存在。此时,两个虚拟主机都没有响应。如果我杀死了有问题的ruby进程,另一个ruby进程将替换它并使用100%的cpu。如果我杀死这些进程5-6次,那么两个虚拟主机都会响应,但不知何故,它们运行的是同一个Rails应用程序

我在这台机器上有另一个虚拟主机,它不是用phusion passenger设置的。这一个从来没有出现任何问题


任何帮助/想法都将不胜感激

我建议切换到nginx

我曾经在phusion passenger上遇到过类似的问题,但调试没有成功。后来,我使用mod_proxy切换到apache2+mongrel。不过,我已经看到nginx具有最好的稳定性。nginx FTW:

显而易见的一点是检查您的应用程序中是否存在任何意外的无限循环或不可能完成的条件。查找太容易了:所有这些都是偶然发生在一张桌子上,桌子太大,无法放入内存

它是立即卡住还是你必须做些什么才能触发它?例如,加载特定页面,或根本不加载页面。初始值设定项中可能存在导致问题的内容


能够启动脚本/控制台总是一个好兆头,尤其是当您可以加载记录时。你的描述中没有太多信息。“ps aux”输出的复制粘贴会有所帮助。

是否可能是某些代码导致了这种情况?我们有许多apache/passenger安装。这更像是你的代码,而不是aapache/乘客。

提醒我未来的自我

我最近继承了一个运行在Passenger和Apache2上的Rails 2.3.x/Ruby 1.8.7应用程序。我将RubyGems从旧的1.3.x更新到1.6.2,并立即注意到当乘客装载时ruby进程达到100%。降级至RubyGems 1.5.3解决了该问题