我想知道为什么启动 apache2 服务器的命令实际上启动了三个进程
确实,输入这个命令:
sudo apache2ctl -k start
然后输入以下命令:
ps aux | grep apache2
给出了三个对应于 apache2 的进程。这正常吗?
答案1
是的。Apache 有几种不同的处理模块来处理请求。最常见的是worker
和prefork
。两者都使用多个进程。Prefork
每个客户端连接使用一个进程,并始终确保有几个空闲进程可用于及时处理新连接。Worker
仍然使用多个进程,但也在这些进程中使用线程。与相比,这使用的资源更少,prefork
但通常仍需要多个进程。
您看到的一个进程可能是“主”进程,它打开 TCP 端口并等待连接,并将传入的连接传递给不同的 apache 进程以进行实际处理。其他进程是工作进程,无论是来自prefork
还是worker
模块。