进程控制和平滑重启

beyod进程的退出和工作进程重启,可以通过入口命令实现:

php beyod.php server/<stop|reload>

SIGTERM: 当使用kill -p PID时发送的信号即为SIGTERM
SIGHUP: 终端挂起时,进程收到此信号,即我们使用&让进程转入后台运行,当关闭终端时,进程收到此信息。

beyod的信号类型有两种:退出和平滑重启

beyod实例的退出:
当master收到SIGINT|SIGTERM|SIGHUP信号时,就向所有worker发送SIGTERM信号,当所有worker退出时,自己再退出。

beyod的平滑重启(reload):
当master收到SIGUSR1时,即向worker发送SIGUSR1, worker收到此信号后退出, 然后master再重新派生所有worker, 从而形成平滑重启。

平滑重启,是指worker在重启时,套接字监听不会被中断,新的客户端仍然可以正常连接。

但是在旧的worker上建立的tcp连接随着进程的退出而被释放,这时客户端需要重新连接。这个行为和nginx的方式完全一致。

parser/handler的加载是在worker中,所以当业务代码更新时,只需要平滑重启工作进程即可。

但是监听套接字却是在主进程中完成的,如果监听参数变动,必须完全重启beyod实例。