探活机制:ngx_http_upstream_check_begin_handler
初始,针对所有peer,每个worker进程都设置了一个探活定时器;每个定时器的初始设定时间都不同,延迟0~check_interval秒;具体某个peer由哪个进程发起探活,遵从以下设定:
定时器到来时,若peer当前时间距上次探测时间间隔 >设置的探活间隔(即超时),令当前进程对后端进行探活;否则,等待超时,或者等待原先发起探活的进程定时器到来,由该pid继续发起探活
异常处理:
(1)超时且不是上次探活pid,由最快到来的定时器所在的进程发起探活
(2)超时2^4 * check_interval, 激活当前定时器
(3)进程退出、优雅退出、中断不再发起探活