我有一个运行Phusion Passenger的apache2服务器。在这台机器上,我有两个虚拟主机,每个都是这样设置的(第二个virtualhost...but的路径不同,其他指令是相同的)
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进程(根据ps awuxf的说法是“Rails: /var/www/mysite/current”),并使用100%的CPU。这个进程永远不会退出。此时,两个虚拟主机都没有响应。如果我杀死了有问题的ruby进程,另一个ruby进程会取而代之,并使用100%的cpu。如果我杀死这些进程大约5-6次,那么两个虚拟主机都会响应,但不知何故,它们在运行相同的Rails应用程序?!
我在这台机器上有另一个虚拟主机,它没有安装phusion passenger..This one,从来没有出现任何问题。
如有任何帮助或想法,我们将不胜感激!
发布于 2010-01-08 04:18:40
我建议改用nginx。
发布于 2010-01-08 04:57:59
我在phusion passenger上遇到过类似的问题,调试没有成功。后来,我用mod_proxy换成了apache2+mongrel。不过,我看到nginx的稳定性最好。nginx FTW :)
发布于 2010-01-08 06:47:43
最明显的事情是检查您的应用程序中没有任何无意的无限循环或不可能完成的条件。在一个太大而内存无法容纳的表上意外地执行find(: all )太容易了。
它是立即卡住还是你必须做些什么才能触发它?例如,加载特定的页面,或者根本不加载页面。在初始化器中可能有一些东西会引起麻烦。
能够启动脚本/控制台总是一个好兆头,特别是如果您可以加载记录的话。你的描述中没有太多信息。复制粘贴'ps aux‘的输出会有所帮助。
https://stackoverflow.com/questions/2023131
复制相似问题