在 apache webserver 文档中,我看到你可以使用apachectl -k graceful-stop
或 WINCH 信号停止 Apache,执行此操作时:
WINCH 或优雅停止信号导致父进程建议子进程在当前请求之后退出(如果子进程没有提供任何服务,则立即退出)
但是,我似乎找不到任何记录“建议”孩子们离开的具体含义的资料。这是在向他们发出信号吗?还是其他什么?
答案1
主进程接收信号,但与子进程的 IPC 是通过管道进行的。
管理员仅通过信号控制主服务器,而主服务器则使用信号或管道来控制子服务器的数量,即死亡管道。(Apache 1.3 仅使用信号)。
正常重启主要影响空闲的子服务器进程。Apache 1.3 只是向进程组发送了 SIGUSR1 信号,而 Apache 2 则将“死亡字符”项放入死亡管道 (pod) 中。繁忙的子服务器将在处理请求后检查管道,甚至在比较它们的代数之前。在这两种情况下,它们都会设置 die_now 标志并在开始请求-响应循环中的新迭代时终止
Apache 建模项目4.3.3.5.2 主服务器控制子服务器
请注意,这允许控制子进程而无需它们立即响应信号。
此分析来自较早的 httpd 版本。请查看源代码以了解准确的当前行为,但从较高层次来看,这仍然适用。