我们的客户有一个 Ruby on Rails 应用程序,它主要是基于客户端的(即,控制器和视图中的处理很少),服务器堆栈中使用 Apache 和 Passenger。
我们看到每个用户连接大约占用 2MB 空间。这是合理的吗,还是我们的配置出了问题?
我们正在尝试估计每台服务器可以支持多少用户。
谢谢!
答案1
应使用 Passenger-memory-stats 确定 Phusion Passenger 的内存占用量。请参阅http://www.modrails.com/documentation/Users%20guide%20Apache.html#_inspecting_memory_usage
我注意到有关 RSS 字段的以下评论:
Private or private dirty RSS 字段显示进程的实际内存使用情况。在这里,我们看到所有 Apache 工作进程仅占用不到 1 MB 的内存。这比 VMSize 列中显示的 50 MB 左右的内存使用量要少得多(很多人认为这是实际内存使用量,但实际上并非如此)。
他们提供了有关内存输出的一个很好的例子:
[bash@localhost root]# passenger-memory-stats
------------- Apache processes --------------.
PID PPID Threads VMSize Private Name
---------------------------------------------.
5947 1 9 90.6 MB 0.5 MB /usr/sbin/apache2 -k start
5948 5947 1 18.9 MB 0.7 MB /usr/sbin/fcgi-pm -k start
6029 5947 1 42.7 MB 0.5 MB /usr/sbin/apache2 -k start
6030 5947 1 42.7 MB 0.5 MB /usr/sbin/apache2 -k start
6031 5947 1 42.5 MB 0.3 MB /usr/sbin/apache2 -k start
6033 5947 1 42.5 MB 0.4 MB /usr/sbin/apache2 -k start
6034 5947 1 50.5 MB 0.4 MB /usr/sbin/apache2 -k start
23482 5947 1 82.6 MB 0.4 MB /usr/sbin/apache2 -k start
### Processes: 8
### Total private dirty RSS: 3.50 MB
--------- Passenger processes ---------.
PID Threads VMSize Private Name
---------------------------------------.
6026 1 10.9 MB 4.7 MB Passenger spawn server
23481 1 26.7 MB 3.0 MB Passenger FrameworkSpawner: 2.0.2
23791 1 26.8 MB 2.9 MB Passenger ApplicationSpawner: /var/www/projects/app1-foobar
23793 1 26.9 MB 17.1 MB Rails: /var/www/projects/app1-foobar
### Processes: 4
### Total private dirty RSS: 27.76 M
答案2
我有一个类似的问题等待答案。我使用了以下命令,
ps aux | grep "apache"
apache 10120 0.1 5.2 287908 31964 ? S 10:41 0:26 /usr/sbin/httpd
总内存的 5.2% (600MB),因此每个进程大约 3MB(使用 php)。不确定这是否正确。
我的问题是,ec2 内存使用情况
答案3
2MB 对于 Apache 来说是合理的,具体取决于你使用的模块。要了解如何最大限度地提高内存效率,你可能需要研究 Apache 的mpm_worker
模块