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

webman如何實現(xiàn)同時處理多個耗時數(shù)據庫查詢業(yè)務?

憑欄知瀟雨

很多時候有些SQL查詢比較耗時,假如用SLEEP(1)模擬,webman的數(shù)據庫是單例的,PDO也是阻塞的,在當前進程內只能同時有一個請求在執(zhí)行,如果開啟4個進程,并發(fā)查詢20次,那么所有請求完成至少需要5秒鐘,如何能做到所有結果1秒鐘返回?

2869 2 2
2個回答

2548a

進程數(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ù)咯.

  • 憑欄知瀟雨 2022-01-25

    一直加進程也不是辦法, 可能還是要優(yōu)化下SQL,加點緩存啥的

walkor 打賞

這種瓶頸在數(shù)據庫,最簡單的方案是多開進程。
數(shù)據庫連接數(shù)是有限的,這種1秒的慢sql,要把數(shù)據庫連接數(shù)用滿才能達到最大QPS。比如數(shù)據庫最大連接數(shù)200,那么極限就是200 QPS,如果是一個請求里有幾個慢SQL,那極限QPS也就幾十個,不管你上多進程 多線程還是協(xié)程 異步非阻塞都一樣。
還有慢sql很耗費性能,幾個慢sql就可能就可能導致mysql cpu100%(當然sleep這種除外)。
有慢sql這種最根本的解決辦法是優(yōu)化sql,或者使用緩存等方案避免頻繁讀寫數(shù)據庫。

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

<li id="owgdm"><meter id="owgdm"></meter></li><bdo id="owgdm"></bdo>
  • <thead id="owgdm"></thead>

    <rt id="owgdm"></rt>
    1. <pre id="owgdm"></pre>