平滑重启更新(GR机制)

平滑重启更新(GR机制)

什么是平滑启动机制
  • 是一种在协议重启时保证转发业务不中断的机制。
什么时候用到平滑重启
  • 平滑重启一般应用于业务更新或者版本发布过程中,能够避免因为代码发布重启服务导致的暂时性服务不可用的影响。
ngnix 平滑重启和平滑更新
  • Nginx的进程分为master主进程和work工作进程,master进程主要管理事件信号接受和分发,所有的请求处理都由work进程处理并返回结 果,Nginx的平滑重启或重载配置文件等升级,首先是向master发送重启或重载配置文件信号,然后master告诉所有的work进程不再接受新的 请求,然后master另起新的work进程,最后告诉旧的work进程可以光荣退出了。
  • 平滑更新 :在upgrade过程中,还涉及到3个信号(USR2、WINCH和QUIT)。
    首先发送USR2信号给原master,原master进程会额外启动一个master进程和若干worker进程,新旧worker进程同时提供对外服务。
    第二步发送WINCH信号,原worker进程停止服务并退出。
    最后发送QUIT信号给原master使之退出,只保留新的master和worker。
php-fpm 平滑重启
  • php-fpm的reload平滑重启是指:假设128个php-cgi进程中有50个进程正在处理PHP程序,而剩余的78个进程处于闲置状态,php-fpm接到平滑重启信号后,会kill掉78个闲置进程,然后新启动128个进程,新请求交给新启动的进程来处理,而那50个进程,只有等到它们处理完自己当前正在执行的PHP程序后,才会被干掉。
  • php-fpm master 进程可以理解以下的信号:
    • INT, TERM 立刻终止
    • QUIT 平滑终止
    • USR1 重新打开日志文件
    • USR2 平滑重载所有worker进程并重新载入配置和二进制模块
  • 关闭php-fpm:
    • kill -INT cat /usr/local/php/var/run/php-fpm.pid
  • 平滑重启php-fpm:
    • kill -USR2 cat /usr/local/php/var/run/php-fpm.pid
  • 注意php-fpm.pid文件需要到到php-fpm.conf配置文件里面打开:

    [global]
    ; Pid file
    ; Note: the default prefix is /usr/local/php/var
    ; Default Value: none
    pid = run/php-fpm.pid
    //即,将pid(;pid = run/php-fpm.pid)前的;去掉。

    参考:https://www.cnblogs.com/justdoyou/p/7152334.html
    http://ask.apelearn.com/question/11387

猜你喜欢

转载自www.cnblogs.com/frankltf/p/8862492.html