这很多的Apache实例是否正常?

我们在Ubuntu 8.04.4 LTS \n \l VPS实例上运行Apache 2.2.8-1ubuntu0.15 ,正如我通过问这个问题所确定的那样。

当我发出pgrep apache2 ,我得到以下内容:

  2691 24517 25330 25669 25672 25795 25796 25809 25825 26401 26402 

那是11个单独的apache2实例! 这是正常的吗? 如果不是,我该怎么办呢?

是。 Apache像传统的Unix守护进程一样工作,其中:

  • 主程序等待传入的请求(套接字上的块)
  • 接收到请求后,使用fork()系统调用,这会导致主进程克隆自己
  • 主进程然后再次等待另一个请求
  • 分叉复制继续处理请求,并终止

分叉确实会消耗时间,所以Apache会预先处理多个请求。 这完全可以通过/etc/apache2.conf来configuration。 我现在无法想到确切的指示,但可能在评论中解释。

如果您希望处理突发的HTTP请求突发事件,那么您将有很多实例处于等待状态。 权衡这是消耗更多的内存。

如果您想降低这个数字,请使用MinSpareServers和MaxSpareServers指令:

http://httpd.apache.org/docs/2.2/mod/prefork.html