为什么Apache运行这么多的进程? 这里有过多的内存?

我注意到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 

Apache正在运行多个进程,以便在客户端请求进入时准备好它们。产生服务器进程很慢,所以最好有一个进程等待客户端。

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

为什么你认为你有太多的apache2进程使用太多的内存? 你能指望什么? 你为什么这么期待?

正如Pawel的答案所解释的那样,apache使用一个进程池(或每个请求带有mpm_worker的线程)的每个请求模型的进程。

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

Apache将运行尽可能多的进程。 如果使用prefork或worker多处理模块,则configuration会有所不同。