我已经在 stackoverflow 上问过这个问题,但我认为这里有人可能也有见解。
我最近在运行 Lion 10.7.2 的 Mac mini 上部署了我的第一个 Rails 应用程序,该应用程序安装了 Apache 和 Phusion Passenger。这是一台四核机器,配有 2 GB 的 RAM。服务器起初似乎很好,只处理少量请求。然而,在请求开始增加后,它就锁定了。这是我第一次在服务器上部署 ROR,我不太确定应该检查什么。我查看了正在运行的 ruby 进程,它大约有 5 或 6 个。
该应用程序极其依赖数据库和 AJAX。
我读过其他关于优化 Phusion Passenger 的帖子,但似乎没有帮助。我的 httpd.conf 文件如下所示:
<VirtualHost *:80>
ServerName http://domain.com/
DocumentRoot /Users/lab/WebApplications/next_browse_app/public
PassengerSpawnMethod conservative
# Speeds up spawn time tremendously -- if your app is compatible.
# RMagick seems to be incompatible with smart spawning
RailsSpawnMethod smart
# Keep the application instances alive longer. Default is 300 (seconds)
PassengerPoolIdleTime 1000
# Keep the spawners alive, which speeds up spawning a new Application
# listener after a period of inactivity at the expense of memory.
RailsAppSpawnerIdleTime 0
# Just in case you're leaking memory, restart a listener
# after processing 5000 requests
PassengerMaxRequests 5000
PassengerMaxPoolSize 4
PassengerMaxInstancesPerApp 4
<Directory /Users/lab/WebApplications/next_browse_app/public>
AllowOverride all
Allow from all
Options -MultiViews
</Directory>
非常感谢您的帮助!谢谢!
答案1
当系统开始缓慢运行的时候,是否已经对 Apache 和 Passenger 做过诊断?
请尝试类似以下工具
apachetop
或者
wtop
它应该让你了解 apache 实时正在做什么!
Passenger 配备了很好的工具,可以显示许多有关 Rails 服务器的内存相关内容。
passenger-memory-stats
既然您提到您的应用程序是数据库密集型的,那么您是否检查过数据库是否是瓶颈!
密切关注整体内存和 CPU 使用情况以获得更好的想法。