• 展开微博窗口
  • QQ:365182575
  • 微信:cighsen
  • 展开分类目录
Nearnet

swoole守护进程、信号和平滑重启

守护进程

swoole官方也为我们提供了配置选项daemonize(默认未启用),若要开启守护进程,daemonize设置为true即可,这样就可以不受终端控制,在后台运行。
配置为守护进程后,所有的标准输出将失效,如果要调试,可以配置log_file,所有的标准输出统统记载到该文件中。

平滑重启

swoole是常驻内存的,若想让修改后的代码生效,就必须Ctrl+C,然后再重启server。对于守护进程化的server呢?则需kill掉后,再重启。
事实上,swoole进程刚好处理了一半的数据,此时被kill,就特别容易出现问题。
swoole为我们提供了平滑重启机制,我们只需要向swoole_server的主进程发送特定的信号,即可完成对server的重启。

SIGTERM,一种优雅的终止信号,会待进程执行完当前程序之后中断,而不是直接干掉进程

SIGUSR1,将平稳的重启所有的Worker进程

SIGUSR2,将平稳的重启所有的Task进程

ps

pstree | grep server_process #找出主进程
kill -TERM 55559 #优雅终止主进程
kill -USR1 55559 #热重启worker进程,onWorkerStart回调之后加载的文件,重启才有意义
kill -USR2 55559 #热重启task进程,onTask回调之后加载的文件,重启才有意义

码字很辛苦,转载请注明来自NAERENET《swoole守护进程、信号和平滑重启》