私はNode.jsをバックエンドとして使用して物理ベースのゲーム用オンラインサーバーを実行しています。現在のサーバーは、次のティックが実行されるまで一度に10のゲーム/世界を処理できます。
この点を念頭に置いて、タイトなスケジュールを使用しました。ナノタイマーこれにより、世界のフェーズは互いに干渉しませんが、順序は1つのプロセッサでのみ実行できることを意味するため、AWSインスタンスのCPU使用率は約55%にすぎません。
使用することにしましたワークセット私のインスタンスで2つのプロセッサを使用するのは良い方法ですが、時には他の外部プロセスが実行されており、世界が時々数秒間処理をブロックすることがあると思います。
これが起こらないようにするにはどうすればよいですか? 2つのプロセッサ(ワークセットなし)を使用すると、ワールドセットはうまく動作しますが、プロセッサの55%しか使用しないため、非常に高価です。
ベストアンサー1
まず、サーバーで実行されるプロセスの優先順位を確認します。
ps -eo pid,ppid,ni,comm
次に、Node.jsプロセスのNice値を最高値に変更し、改善があるかどうかを確認します。
renice -n -12 -p(node.jsのPID)