在“CentOS 版本 6.2 (最终版)”服务器 (带有 Ruby 1.9.3 和 Rails 3.2) 上,使用的内存比预期的要多。
查看乘客内存统计信息时,我看到几个巨大的 httpd 进程...有什么想法可以让我弄清楚发生了什么并减少内存使用量?
统计数据包含在这里...谢谢!
---------- Apache processes -----------
PID PPID VMSize Private Name
---------------------------------------
1371 1 202.1 MB 0.1 MB /usr/sbin/httpd
4573 1371 210.2 MB 5.0 MB /usr/sbin/httpd
4778 1371 202.5 MB 0.6 MB /usr/sbin/httpd
4780 1371 217.6 MB 9.4 MB /usr/sbin/httpd
4781 1371 217.1 MB 9.1 MB /usr/sbin/httpd
4856 1371 202.4 MB 0.5 MB /usr/sbin/httpd
4863 1371 204.1 MB 2.1 MB /usr/sbin/httpd
5027 1371 202.4 MB 0.5 MB /usr/sbin/httpd
5043 1371 202.4 MB 0.4 MB /usr/sbin/httpd
5044 1371 205.5 MB 2.7 MB /usr/sbin/httpd
5072 1371 202.4 MB 0.5 MB /usr/sbin/httpd
5084 1371 202.4 MB 0.5 MB /usr/sbin/httpd
32111 1371 1297.0 MB 246.5 MB /usr/sbin/httpd
32579 1371 1914.3 MB 215.5 MB /usr/sbin/httpd
### Processes: 14
### Total private dirty RSS: 493.42 MB
-------- Nginx processes --------
### Processes: 0
### Total private dirty RSS: 0.00 MB
----- Passenger processes -----
PID VMSize Private Name
-------------------------------
4180 280.5 MB 24.4 MB Passenger ApplicationSpawner: /var/www/apps/people/current
4345 309.5 MB 53.4 MB Rack: /var/www/apps/people/current
4800 300.2 MB 55.2 MB Rack: /var/www/apps/people/current
4808 297.8 MB 52.5 MB Rack: /var/www/apps/people/current
4815 297.4 MB 52.4 MB Rack: /var/www/apps/people/current
4822 302.7 MB 55.6 MB Rack: /var/www/apps/people/current
22780 209.0 MB 0.0 MB PassengerWatchdog
22783 991.5 MB 1.3 MB PassengerHelperAgent
22785 113.4 MB 1.1 MB Passenger spawn server
22788 144.6 MB 0.0 MB PassengerLoggingAgent
22911 310.4 MB 64.0 MB Rack: /var/www/apps/people/current
22939 311.6 MB 53.5 MB Rack: /var/www/apps/people/current
26175 304.1 MB 55.8 MB Rack: /var/www/apps/people/current
26182 310.4 MB 44.0 MB Rack: /var/www/apps/people/current
### Processes: 14
### Total private dirty RSS: 513.24 MB
* 更新 *:我意识到更大的罪魁祸首可能是我们的应用程序,而不是 Rails,但我试图弄清楚在所有情况下发生了什么......所以......这里有几个更具体的问题:
这两个巨大的 httpd 进程是怎么回事?我预计 Passenger 会出现两个大型 spawner 进程,但为什么 apache 看起来是这个样子?
假设我需要对 Rails 应用程序进行一些内存使用分析,有哪些工具可以帮助我完成这项工作?我知道很多性能分析、基准测试等工具 - 但是,有什么工具可以帮助我判断内存的使用情况呢?
答案1
这些进程都在运行您的 Rails 应用程序。它们的大小都相对一致,我怀疑如果您包含 Apache/Passenger 配置文件(或至少其中的一部分),我们会看到计数与您配置的子进程数一致。我会首先查看 Rails 应用程序,看看它为什么占用这么多 RAM,然后然后回到 Apache/Passenger。