国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

workerman 平滑重啟原理 。分析源碼 沒有看懂

oldtwo

截圖
為什么這個(gè)就可以實(shí)現(xiàn)平滑重啟。 沒有看懂。 怎么保證。我在重啟的時(shí)候 之前沒有完成的請求可以繼續(xù)完成。新的請求不過來

2852 2 1
2個(gè)回答

phpcreeper

得分開理解,就拿 restart 和 reload 舉例來說吧

  • restart自身的含義是父進(jìn)程接收到特定信號后,父進(jìn)程會將特定信號送給旗下的各個(gè)子進(jìn)程,注意:這時(shí)候子進(jìn)程收到相應(yīng)信號后可以看做是同時(shí)退出的,與此同時(shí)父進(jìn)程也會退出;
  • reload恰好相反,其本身的含義基本同上,區(qū)別之一在于子進(jìn)程收到相應(yīng)的信號后,是一個(gè)一個(gè)來的,就是你退完了,我再退,如此迭代往復(fù),完成子進(jìn)程的滅失和再生;區(qū)別之二在于父進(jìn)程并不會退出,但是restart會退出;

那再來說說 -g 參數(shù)
上面的描述針對的都是指令本身,也就是裸參行為,但是一旦帶了-g參數(shù),那么上述指令的行為就會發(fā)生微妙的變化,體現(xiàn)在: 當(dāng)子進(jìn)程發(fā)現(xiàn)依然有活動的TCP連接時(shí),子進(jìn)程是不會退出的,換句話就是它就會等待你把事情干完,所以我想在必要的時(shí)候(比如業(yè)務(wù)干完了)是需要關(guān)閉下TCP連接的。

如此看來,應(yīng)該使用: restart -g 或 reload -g

  • phpcreeper 2022-05-12

    再補(bǔ)充下,其實(shí)對于短連接這個(gè)是沒有問題,長連接我認(rèn)為還要做些額外工作: 比如在收到reload -g 指令后【業(yè)務(wù)層可以在onWorkerReload回調(diào)里干】還是應(yīng)該有個(gè)timeout機(jī)制的,可以先判斷下是否有?;顢?shù)據(jù)包或者通過一個(gè)標(biāo)記位判斷有沒有業(yè)務(wù)正在處理,沒有就直接干掉TCP連接,否則限定在timeout內(nèi)干完然后再干掉TCP連接.

  • oldtwo 2022-05-12

    謝謝 你。 我自己在想想吧

  • oldtwo 2022-05-12

    當(dāng)子進(jìn)程發(fā)現(xiàn)依然有活動的TCP連接時(shí),子進(jìn)程是不會退出 。 子進(jìn)程 怎么發(fā)現(xiàn) 有沒有活動的進(jìn)程的

  • yzmdd 2022-11-20

    如何平滑重啟,你得看看worker啟動之后,進(jìn)入事件循環(huán)的代碼看select的容易理解點(diǎn),結(jié)合你現(xiàn)在看到的信號代碼;select事件循環(huán)的首先就是觸發(fā)信號處理函數(shù),后面才是處理讀寫time等事件,就是調(diào)用綁定的事件回調(diào)函數(shù);所以當(dāng)worker進(jìn)程執(zhí)行到pcntl_signal_dispatch后面的代碼,即使有信號事件來也不會觸發(fā),當(dāng)然這里說的除了SIGKILL信號,這就達(dá)到了worker還在處理業(yè)務(wù)的時(shí)候是不會退出的,但是如果不加-g參數(shù)父進(jìn)程給worker發(fā)送的是SIGKILL信號,這個(gè)信號會立刻讓進(jìn)程退出,SIGKILL信號是不會暴露給用戶的,就是這個(gè)信號不能綁定用戶的回到函數(shù)

  • liziyu 2022-11-20

    看來再深入就要涉及到操作系統(tǒng)方面的東西了,厲害!~

evilk

我測試過
執(zhí)行 restart -d不是reload -d
同樣可以啟起到平滑重啟的作用
前提是設(shè)置stop_timeout = 30

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??