我在Ubuntu 14.04 LTS上运行apache2。 Web服务器专用于仅提供mp4视频文件。启用服务器状态模块后,我正在观察服务器为每个mp4下载请求生成3个子进程。无论我的应用程序是否尝试加载文件,或者我是通过wget还是通过Web服务器手动执行此操作,都会发生这种情况。这些请求都不会重复多次。然而,服务器仍然创建3个子节点,所有子节点都作为单独的PID运行。
有谁能解释这里发生了什么?
答案 0 :(得分:0)
这是为了速度。
实际上,它应该是pre-fork()
on startup。还有安全问题可以解决:
listen()
)端口80和443等(可能以root用户身份)fork()
accept()
连接并处理它们(在孩子中)默认情况下,它会创建一定数量的子项。您应该能够更改该号码。之前是10点。一些较大的服务器将创建100个。
然后,孩子们将回答一定数量的请求(默认情况下为100,如果我是正确的话),然后退出。当他们退出时,父进程会检测到孩子死亡的事实,并再次调用fork()
来调整子进程数。只有在各种阈值允许的情况下,才会发生进一步的fork()
次呼叫。