这么多 Apache 实例正常吗?

这么多 Apache 实例正常吗?

2.2.8-1ubuntu0.15我们在 VPS 实例上运行 Apache 版本Ubuntu 8.04.4 LTS \n \l,这是我通过询问确定的这个问题

当我发出时pgrep apache2,我得到以下信息:

 2691
24517
25330
25669
25672
25795
25796
25809
25825
26401
26402

有 11 个独立实例apache2!这正常吗?如果不正常,我该怎么办?

答案1

是的。Apache 的工作方式类似于传统的 unix 守护进程,其作用如下:

  • 主程序等待传入请求(阻塞在套接字上)
  • 收到请求后,使用 fork() 系统调用,导致主进程克隆自身
  • 然后主进程再次等待另一个请求
  • 分叉副本继续处理请求,然后终止

分叉确实会耗费时间,因此 Apache 会预先分叉多个实例以处理多个请求。这完全可以通过 /etc/apache2.conf 进行配置。我现在想不出确切的指令,但评论中可能对此进行了解释。

如果您希望处理突然爆发的并发 HTTP 请求,那么让大量实例待命以处理这些请求对您大有裨益。但这样做的代价是会消耗更多内存。

答案2

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

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

相关内容