为什么Apache运行这么多进程?这里的RAM过多?


17

我注意到Apache在我的LAMP服务器(ubuntu 10.10)上运行多个进程。我正在运行一个将MySQL作为数据库的Wordpress网站。看来www-data正在运行apache2的次数超过了应有的水平(也使用了过多的内存),我是否正确:

ID      Owner       Size        Command   
31200   www-data    251236 kB   /usr/sbin/apache2 -k start
20678   www-data    250948 kB   /usr/sbin/apache2 -k start
25781   www-data    248888 kB   /usr/sbin/apache2 -k start
31045   www-data    248844 kB   /usr/sbin/apache2 -k start
19926   www-data    246480 kB   /usr/sbin/apache2 -k start
20749   www-data    239380 kB   /usr/sbin/apache2 -k start
32616   www-data    238632 kB   /usr/sbin/apache2 -k start
8846    mysql   238128 kB   /usr/sbin/mysqld
24178   www-data    234228 kB   /usr/sbin/apache2 -k start
32618   www-data    232344 kB   /usr/sbin/apache2 -k start
32615   www-data    232204 kB   /usr/sbin/apache2 -k start
19805   root    208156 kB   /usr/sbin/apache2 -k start

我以前的工作也是如此(CentOS)。我只是假设它们都是所有请求的子进程apache启动。尽管如此,我们从未遇到过性能/内存问题……
Nandhini Anand 2011年

嗯 由于这是VPS,我只是担心该系统上的内存不足。
特伦特·斯科特

Answers:


19

Apache正在运行多个进程,以便在收到客户机请求时准备好它们。生成服务器进程很慢,因此最好让一个进程在等待客户机。

对于内存使用,应考虑帐户RES大小(如顶部所示),该大小是任务使用的物理内存量。

为什么您认为使用太多内存的apache2进程太多?你能指望什么?为什么会这样呢?


这是在基于云的映像上。似乎它占用的内存比这么小的站点要多。实际内存:总计496.36 MB /可用92.02 MB交换空间:总计1024 MB /可用975.93 MB
Trent Scott

1
@特伦顿:用帕维尔的回答听起来不错。除非您实际上由于内存不足而遇到mysql崩溃或其他问题,否则应该没问题。如果发生这种情况,那么您应该寻找apache配置来限制这些产生的进程。
Nandhini Anand

2
Linux将尝试保留大部分已使用的内存。如果没有其他可放入的内容,它将使用RAM作为缓存和磁盘缓冲区。空内存是浪费的内存(如果您还没有用完RAM)。
帕维尔Brodacki

3

正如Pawel的回答所解释的那样,apache将每个请求的模型与一个进程池一起使用(或者将每个请求的线程与mpm_worker一起使用)。

您可以通过使用基于非阻塞IO的Web服务器(例如nginx)来减少内存使用。这样,服务器不需要为每个连接专用一个进程/线程。


2

Apache将运行您配置的尽可能多的进程。如果您使用预工作人员多处理模块,则配置会有所不同。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.