為了充分發揮服務器多CPU的性能,workerman默認支持多進程多任務。
WorkerMan開啟一個主進程和多個子進程對外提供服務, 主進程負責監控子進程,子進程獨自監聽網絡連接并接收發送及處理數據,由于進程模型簡單,使得WorkerMan更加穩定,更加高效。? ? ? ? ? ? ? ? ? ? ? (推薦學習: workerman教程)
創建一個主進程(守護進程),一旦啟動長時間運行在后臺,即使關掉瀏覽器頁面.
主線程定時查詢數據庫(mysql),一旦發現有符合條件的URL(可能多條),即創建對應的數量的子進程.
子進程也需要長時間存在,定時輪詢URL對應的服務器取回數據.
子進程一旦取回所需要的數據,將結果保存到數據庫,自我結束(或被主進程關閉).
進程數設置原則
1、每個進程占用內存之和需要小于總內存(一般來說每個業務進程占用內存大概40M左右)
2、如果是IO密集型,也就是業務中涉及到一些阻塞式IO,比如一般的訪問Mysql、redis等存儲都是阻塞式訪問的,進程數可以開大一些,如配置成CPU核數的3倍。
如果業務中涉及的阻塞等待很多,可以再適當加大進程數,例如CPU核數的5倍甚至更高。注意非阻塞式IO屬于CPU密集型,而不屬于IO密集型。
3、如果是CPU密集型,也就是業務中沒有阻塞式IO開銷,例如使用異步IO讀取網絡資源,進程不會被業務代碼阻塞的情況下,可以把進程數設置成和CPU核數一樣
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END