深さ理解nodejs[4]-clusterマルチスレッドnode
以下のexpressプログラムでは、nodejs単スレッドの欠陥が見られます.ホーム・ページlocal host:3000にアクセスすると、doWork(5000)メソッドは5秒間停止します.長い待ち時間によって、nodeは休止状態に陥ることがあります.他の要請が来たら、待つだけです.例えば、訪問後すぐにロカホスト:3000/fastにアクセスして、しばらくだけ待つことができます.
nodejs内蔵のcluster moduleを使って、複数のnodeのインスタンスを同時に実行させ、複数のnodeのインスタンスを管理することができます.clusterは複数のnode例を管理する.cluster managerのインスタンスとchildのインスタンスは、このファイルのコードを呼び出します.
cluster.isMasterを通して二つを区別します.cluster managerの中でcluster.isMasterはtrueです.childの例では、cluster.isMasterはfalseである.
cluster.fork()は、新しいchildの例を表す.
以下のコードは最初に、cluster managerの例は4つのchildのインスタンスを新たにオープンしました.だから、たとえ一つのchild停止であっても、他のchildの仕事に影響を与えません.
clusterが作ったchildの実数は多ければ多いほどいいというものではないです.clusterはすべての要求を同時に終了させるからです.私達はforkした6つのchildを想像してみてください.6つの要求が来た時に、コンピュータがこの処理能力がないと、2つのスレッドしか処理できません.しかし、6つの要求は同時に終わる必要があります.これはかえってすべての速度を遅くしました.これは二つの二つの実行よりいいです.本のリンク: https://dreamerjonson.com/2018/11/10/深度理解nodejs-4-clusterマルチスレッドnode/ 著作権声明: このブログのすべての文章は特別声明のほか、すべて採用しています. CC BY 4.0 CNプロトコル ライセンス契約転載は出典を明記してください.
鄭建勲ブロックチェーンエンジニア&Webエンジニア
災難は後を絶たずやってくる.これこそ世の常識だ.泣いて訴えさえすれば、誰が助けてくれると思いますか?失敗したら、私はこれぐらいの男だとしか言いようがない.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const express = require('express');
const app = express();
function doWork(duration){
const start = Date.now();
while(Date.now()-start{
doWork(5000);
res.send("i like jonson")
})
app.get('/fast',(req,res)=>{
res.send("i like jonson")
})
app.listen(3000);
clusterマルチスレッドnode強化node表現nodejs内蔵のcluster moduleを使って、複数のnodeのインスタンスを同時に実行させ、複数のnodeのインスタンスを管理することができます.clusterは複数のnode例を管理する.cluster managerのインスタンスとchildのインスタンスは、このファイルのコードを呼び出します.
cluster.isMasterを通して二つを区別します.cluster managerの中でcluster.isMasterはtrueです.childの例では、cluster.isMasterはfalseである.
cluster.fork()は、新しいchildの例を表す.
以下のコードは最初に、cluster managerの例は4つのchildのインスタンスを新たにオープンしました.だから、たとえ一つのchild停止であっても、他のchildの仕事に影響を与えません.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const cluster = require("cluster");
if(cluster.isMaster){
cluster.fork();
cluster.fork();
cluster.fork();
cluster.fork();
}else{
const express = require('express');
const app = express();
function doWork(duration){
const start = Date.now();
while(Date.now()-start{
doWork(5000);
res.send("i like jonson")
})
app.get('/fast',(req,res)=>{
res.send("i like jonson")
})
app.listen(3000);
}
cluster欠陥clusterが作ったchildの実数は多ければ多いほどいいというものではないです.clusterはすべての要求を同時に終了させるからです.私達はforkした6つのchildを想像してみてください.6つの要求が来た時に、コンピュータがこの処理能力がないと、2つのスレッドしか処理できません.しかし、6つの要求は同時に終わる必要があります.これはかえってすべての速度を遅くしました.これは二つの二つの実行よりいいです.
鄭建勲ブロックチェーンエンジニア&Webエンジニア
災難は後を絶たずやってくる.これこそ世の常識だ.泣いて訴えさえすれば、誰が助けてくれると思いますか?失敗したら、私はこれぐらいの男だとしか言いようがない.