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

多進程,怎么理解每個worker中,不會導致并發(fā)數(shù)據(jù)混亂問題

wadeYang

注意: 不要在主進程中初始化數(shù)據(jù)庫、memcache、redis等連接資源,因為主進程初始化的連接可能會被子進程自動繼承(尤其是使用單例的時候),所有進程都持有同一個連接,服務端通過這個連接返回的數(shù)據(jù)在多個進程上都可讀,會導致數(shù)據(jù)錯亂。同樣的,如果任何一個進程關閉連接(例如daemon模式運行時主進程會退出導致連接關閉),都導致所有子進程的連接都被一起關閉,并發(fā)生不可預知的錯誤,例如mysql gone away 錯誤。

推薦在onWorkerStart里面初始化連接資源。
上面是手冊 http://doc.workerman.net/development/before-development.html 摘出來的。

1、主進程中初始化連接資源,會導致子進程都持有同一個鏈接資源,容易導致數(shù)據(jù)混亂,這個可以理解了。

2、但是每個子進程中的鏈接資源,就不會導致這個進程中處理數(shù)據(jù)混亂了嗎?拿數(shù)據(jù)庫連接來說,我的理解是,每個子進程能并發(fā)處理請求,那說明不同請求都會使用數(shù)據(jù)庫連接資源,甚至不同請求都在處理同一條數(shù)據(jù)。這樣不會導致數(shù)據(jù)混亂嗎,是什么機制呢?

3324 1 1
1個回答

weijer

每個worker進程都是獨立的連接,在單worker進程里面是同步阻塞執(zhí)行的,執(zhí)行完例如webman每次都會重置request對象所以不會發(fā)生數(shù)據(jù)污染。

  • wadeYang 2021-03-16

    意思也是類似php-fpm的運行方式嗎?

    我查資料,pfm的運行方式是這樣。每個worker在啟動后阻塞著,有請求到達后worker開始讀取請求數(shù)據(jù),讀取完成后開始處理然后再返回,在這期間是不會接收其它請求,也就是說fpm的子進程同時只能響應一個請求,只有把這個請求處理完成后才會accept下一個請求

    那意思像workerman中,如果設置worker=4,意思是同一時刻,只能處理4個請求嗎

  • evilk 2021-06-01

    webman,本質是同步阻塞模式,比如有200個進程,那么,同一時刻,只能同時處理200個請求

  • liziyu 2022-02-09

    可以理解為每個worker子進程的數(shù)據(jù)庫連接也是相互獨立的了?其中一個worker的數(shù)據(jù)庫i/o阻塞或中斷不會影響其它子進程,是這樣的嗎?

  • evilk 2022-02-16

    work進程都是獨立的,互不影響

年代過于久遠,無法發(fā)表回答
??