複習此共筆
引用此內容
一般 Worker 運行時會佔用到 CPU 的核心數,假如 Worker 的數量等同於 CPU 核心數, Worker 在進行 IO 時,該 CPU 就會是閒置的。
對一些追求效能的人來說,CPU 的閒置 = 浪費,所以會嘗試多開幾個 Worker,讓某個 Worker 進行 IO 時,其它 Worker 可以佔用空閒下來的 CPU 資源;但作業系統為了「公平」,會盡可能讓多個需要 CPU 資源的 Worker 輪流使用 CPU,這個從一個 Worker 切換成另一個 Worker 的過程稱為 Context Switch,並帶來一些運算資源的浪費。
舉 JAVA 為例,JAVA 一台機器就一個 process ,而底下會有很多 thread 幫他做事,要注意,thread 是共用 memory 的! ,因此新增一台機器只會多一個 process 不會如 NodeJS 一樣成倍數成長,因此穩定度就成了大企業的首選。
情境:
今天來了 3 個 request (r1, r2, r3)
process 指定 r1 去 thread 1
process 指定 r2 去 thread 2
process 指定 r3 去 thread 3…
如有侵犯權利,再請通知 謝謝