使用supervisord管理swoole服務踩過的一個坑

在一次發版以後,例行去看監控的時候,我發現某一臺服務器的內存使用量不正常,比其餘服務的內存使用量高了將近一倍。php

我登陸到服務器上,執行命令服務器

ps -ef | grep php | wc -l

發現,swoole服務的worker進程數量比咱們設置的數量高了一倍。swoole

若是你覺得我要寫一大段迷宮似找坑經驗,那你就大錯特錯了。架構

我憑我對swoole、supervisord的瞭解,很快就意識到這是因爲supervisord的stopwaitsecs參數設置太短(默認10s),而swoole在收到關閉信號的時候,會等待子進程的事件循環爲空纔會關閉子進程,若是這個過程超過10s,主進程就會被強制kill掉,而後子進程因爲沒有收到關閉信號,一直沒有被kill掉。pwa

解決方案很簡單,將supervisord配置項改一下便可code

stopwaitsecs=60 #你也能夠調的更大

填坑,有時也是很簡單的。進程

更多架構、PHP、GO相關踩坑實踐技巧請關注個人公衆號:PHP架構師事件

相關文章
相關標籤/搜索