質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Q&A

解決済

1回答

3140閲覧

Node.jsが動くWebサーバ(Nginx)のスケールアップについて

tmizuma

総合スコア53

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

0グッド

0クリップ

投稿2016/12/23 18:42

Nginx上で動くNode.jsアプリケーションを運用しようと考えています。

Node.jsはシングルスレッドで動作するということは、サーバのスケールアップによりCPUコア数を増やしてもアプリケーションのパフォーマンス改善は見込めないという理解で正しいでしょうか?

上記が正しいとすれば、現状のスペックでさばききれない量のリクエストが来た場合は、スケールアウトで対応するしかないということでしょうか。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Node.jsはシングルスレッドで動作するということは、サーバのスケールアップによりCPUコア数を増やしてもアプリケーションのパフォーマンス改善は見込めないという理解で正しいでしょうか?

はい、間違っていません。

ただし、そのようなことになるほど、CPU依存性が高いアプリケーションは少ないのも事実です。データベースへの問い合わせやファイル I/O などは、 node.js のスレッドのCPUを消費しませんので、通常は node.js の CPU を使い切るまえにそれらの性能がボトルネックになります。

上記が正しいとすれば、現状のスペックでさばききれない量のリクエストが来た場合は、スケールアウトで対応するしかないということでしょうか。

ちょっと気になったので追記します。
「スケールアウトで対応するしかない」の意味が「マルチスレッドならそうはならないのに、シングルスレッドで並列化ができないせいで、サーバを増やすしかない」という意味であれば、それは間違っています。

ユーザ数が増えて同時アクセス数が増えたために「さばききれない量のリクエスト」がくる想定であれば、マルチスレッドのアプリケーションサーバではスレッド間の排他制御、コンテキストスイッチ、スレッドのメモリ消費が理由でnode.js より圧倒的に不利であることがわかっています(c10k問題と呼ばれています)。つまり、 node.js でさばききれないのであれば、マルチスレッドでもさばききれません。

参考:c10k問題

投稿2016/12/24 09:08

編集2016/12/24 20:33
mit0223

総合スコア3401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問