Node+Express テストサーバーのパフォーマンス

Node+Express テストサーバーのパフォーマンス

1 テスト環境

1.1 サーバーハードウェア

テスト対象のホストはAWSクラウドサーバーです。2つのテストが選択されています

1.1.1 t2.マイクロ

t2.micro は画期的なパフォーマンスを誇る EC2 で、AWS グローバル無料パッケージのサーバーです。構成は以下のとおりです。

t2.micro は画期的なパフォーマンスを誇る EC2 で、AWS グローバル無料パッケージのサーバーです。構成は以下のとおりです。

モデル仮想CPU電子制御ユニットメモリストレージネットワークパフォーマンス料金(時間)
t2.マイクロ1変数1 EBSのみ低〜中0.0945

シングルコア 1G、CPU パフォーマンスは 0.45ECU で、パフォーマンスが向上すると 2ECU に到達できます。ネットワーク性能は20Mbps~100Mbpsと言われている

PS: EC2 コンピューティング ユニット (ECU) – 1 つの EC2 コンピューティング ユニット (ECU) は、1.0~1.2 GHz の 2007 Opteron または 2007 Xeon CPU の計算能力に相当します。

1.1.2 c5.large

次に、評価用に c5.large を選択しました。

モデル仮想CPU電子制御ユニットメモリストレージネットワークパフォーマンス価格
c5.大2 9 4 EBSのみ最大10Gb 0.493

デュアルコア4G、パフォーマンスは9ECUに達する

1.1.3 プレス

プレス機は同じアベイラビリティゾーンにある別の c5.large です。

1.2 テストツール

1.2.1 テスト端末

ab ツールは主にテストに使用されます。 ab ツールは最大 2 億を同時に実行できるため、単一マシンのテストには十分です。

腹筋ツールの使い方については、別のブログを参照してください:https://www.jb51.net/article/231502.htm

1.2.2 サーバー監視

サーバー側の監視は主に AWS バックエンドの cloudwatch サービスを使用し、CPU とメモリの使用量はトップツールでチェックされます。

top コマンドの使い方については、別のブログを参照してください。

1.3 試験方法

Express フレームワークの app.js にテスト ルートを直接追加し、res.end() を直接返します。

2 テストデータ

2.1 c5.ラージ

図から、同時実行数が 2000 の場合、平均応答時間は 874.725 ミリ秒、QPS は約 2286.43 であることがわかります。月間 300 を超える 2 コア 4G サーバーでは、Express フレームワーク自体のパフォーマンスは悪くありません。

2.2 t2.マイクロ

図から、同時実行数が 300 の場合、平均応答時間は 189.191 ミリ秒、QPS は約 1585.7 であり、70 ブロック/月の T2 のパフォーマンスはかなり良好であることがわかります。ただし、同時実行数が 1000 に達すると、全体的なパフォーマンスがあまり安定しないことも図からわかります。

3 関連文書

IoT デバイスの同時接続数を推定するブログ:

https://www.jb51.net/article/231516.htm

ストレステストツールab:

https://www.jb51.net/article/231502.htm

ストレステストの指標と方法:

https://www.jb51.net/article/231518.htm

以上が、node+Express を使用してサーバーのパフォーマンスをテストする方法の編集者による紹介です。皆様のお役に立てれば幸いです。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • VPSサーバーでよく使われるパフォーマンステストスクリプトの概要
  • Nginx サーバーでパフォーマンス テストを実行するための Go プログラムの書き方

<<:  MySQL で CURRENT_TIMESTAMP を使用する方法

>>:  JS ベースのページフローティングボックスを実装するためのサンプルコード

推薦する

CentOS7でMySQL 5.7をアンインストールする方法

MySQLに何がインストールされているか確認する rpm -qa | grep -i mysql n...

VUEの基本を理解するのに役立つ記事

目次VUEとはVueのコアプラグインVueルーターヴュークスアクシオス要素UI Vue フロントエン...

Docker Composeでコンテナ管理の問題を解決する

Docker の設計では、コンテナは 1 つのアプリケーションのみを実行します。しかし、現在のアプリ...

Docker Secretの管理と使用の詳細な説明

1. Docker Secretとは1. シナリオ表示MySQL サービスなど、一部のサービスではパ...

画像をMySQLデータベースに保存し、フロントエンドページに表示するための実装コード

目次1. まず、pycharmを使用してDjangoプロジェクトを作成し、関連する環境を設定します。...

シンプルなカウントダウン効果を実現するJavaScript

この記事の例では、カウントダウン効果を実現するためのJavaScriptの具体的なコードを参考までに...

ウェブサイトのデザインを改善するための役立つ提案を提供します

<br />ウェブサイトを科学的にデザインする: アイトラッキング研究から学ぶ 23 の...

HTML のテキストエリア タグ

<textarea></textarea> は、複数行を入力できるテキスト ...

HTML/CSS での空白処理とページ内の空白を保持する方法

HTML の空白ルールHTML では、コンテンツ内の複数のスペースは通常 1 つとみなされ、連続する...

Ubuntuで余分なカーネルを削除する方法

ステップ1: 現在のカーネルを表示する 読み取る $ uname -a Linux rew 4.15...

TypeScript における列挙型の理解と応用シナリオ

目次1. 何ですか2. 使用数値列挙文字列列挙異種列挙自然3. 応用シナリオ要約する1. 何ですか列...

MySQL データベースを最適化する 8 つの方法の詳細な説明 (必読の定番)

導入:インターネット上にはデータベースの最適化に関する情報や方法が数多くありますが、その多くは品質に...

MySQL プロジェクトでトランザクション分離レベルを選択する方法

導入コンテンツから始めましょう。誰もが次のような面接のシナリオに遭遇したことがあると思います。インタ...

HTML フォーマットの json のサンプルコード

さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 <!DOCTYPE htm...

MySQLのネストされたトランザクションで発生する問題

MySQL はネストされたトランザクションをサポートしていますが、それを実行する人は多くありません....