很多時候有些SQL查詢比較耗時,假如用
SLEEP(1)
模擬,webman的數(shù)據庫是單例的,PDO也是阻塞的,在當前進程內只能同時有一個請求在執(zhí)行,如果開啟4個進程,并發(fā)查詢20次,那么所有請求完成至少需要5秒鐘,如何能做到所有結果1秒鐘返回?
進程數(shù)設置原則
1、每個進程占用內存之和需要小于總內存(一般來說每個業(yè)務進程占用內存大概40M左右)
2、如果是IO密集型,也就是業(yè)務中涉及到一些阻塞式IO,比如一般的訪問Mysql、Redis等存儲都是阻塞式訪問的,進程數(shù)可以開大一些,如配置成CPU核數(shù)的3倍。如果業(yè)務中涉及的阻塞等待很多,可以再適當加大進程數(shù),例如CPU核數(shù)的5倍甚至更高。注意非阻塞式IO屬于CPU密集型,而不屬于IO密集型。
3、如果是CPU密集型,也就是業(yè)務中沒有阻塞式IO開銷,例如使用異步IO讀取網絡資源,進程不會被業(yè)務代碼阻塞的情況下,可以把進程數(shù)設置成和CPU核數(shù)一樣
這種我一般會直接拆分出來,圖方便就直接加大進程數(shù)咯.