問題タブ [apachebench]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apache - NodeJSとapacheベンチマークを使用した奇妙な動作
nodejs(0.8.11)をテストしています。
次のサーバーアプリを使用します。
私はapacheベンチマークを実行しました:
ab -r -v 4'http://127.0.0.1:1337/'
次の出力が得られます。
abからの出力:
そして、abマニュアルで指定されているように、デフォルトのリクエスト数が1ではないと考えて、私は試しました:
同じ出力が得られます(ログに「ヒット!」がたくさんあります)
ここで何が起こっているのですか?
これはノードに固有です。私は私の桟橋アプリで同じことを試しましたが、ab -c 1 -n 1
記録されたヒットは1つだけでした...
注:ノードサービスをカールさせてみました-1'ヒットのみ!' ログに...
node.js - NodeJS ベンチマーク
NodeJS と Apache + PHP のどちらが速いかを比較するために、ベンチマークを作成しました。
「Hello world」アプリケーションをテストしたときは Node の方が高速でしたが、http.get 関数を使用しようとすると、まったく別の話でした。
NodeJS が非常に遅くなるのはなぜですか? http.get で扱っていますか?または何?
テスト環境
1. ハローワールドアプリケーション:
NodeJS コード:
PHP コード:
結果:
見出し
ab -n 10000 -c 10 ホスト名 .
10.000 リクエスト、10 同時 (秒単位の時間)
ab -n 10000 -c 100 ホスト名
10.000 リクエスト、100 同時 (秒単位の時間)
ab -n 100000 -c 300 ホスト名
100.000 リクエスト、300 同時 (秒単位の時間)
2. プル フィード アプリケーション:
NodeJS コード:
PHP コード:
結果:
* ab -n 100 -c 10 ホスト名 *
100 件のリクエスト、10 件の同時リクエスト (秒単位の時間)
* ab -n 1000 -c 10 ホスト名 *
1000 リクエスト、10 同時 (秒単位の時間)
* ab -n 10000 -c 100 ホスト名 *
10.000 リクエスト、100 同時 (秒単位の時間)
* ab -n 10000 -c 50 ホスト名 *
10.000 リクエスト、50 同時 (秒単位の時間)
node.js - Apachebench が私が要求するよりも多くの要求を行っている
サーバーをテストするために、apachebench を使用して多数のリクエストを作成しようとしています。ただし、多くの場合、私が要求するよりも多くの要求が行われます。これを使用して、express を使用する node.js サーバーをテストしています。
1 つのリクエストのみを行う場合もあれば、10 から 100 のリクエストを行う場合もあるため、気難しいように見えます。悪い点は、リクエストが 1 つしか行われていないことを報告するだけであることです。私は何か間違ったことをしていますか?これは node.js が非同期であることと関係がありますか?
「ab」を使用して node.js サーバーのベンチマークに問題があった人はいますか?
node.js - Node.jsは、クラスタリングなしでabではるかに優れています.何が欠けていますか?
更新 1 : 非常によく似た構成での @BagosGiAr テストは、クラスターのパフォーマンスが常に向上することを示しています。つまり、私の構成に問題があり、その原因を突き止める手助けをしてほしいとお願いしています。
更新 2 : この問題について詳しく説明したいと思います。同じノード バージョンの LiveCD* (Xubuntu 13.04) でテストしました。まず、Linux のパフォーマンスは Windows よりもはるかに優れて-n 100000 -c 1000
います。クラスターなしで 6409.85 リクエスト/秒、クラスタリングありで 7215.74 リクエスト/秒です。Windowsビルドには間違いなく多くの問題があります。それでも、同様の構成を持つ一部の人々がより優れたパフォーマンスを発揮する (そしてクラスタリングもうまく機能する) ことを考えると、なぜこれが私だけに起こっているのかを調査したいと思います。
*Windows では高速な SSD を使用していましたが、LiveCD は RAM ファイルシステムを使用していることに注意してください。
これはどのように可能ですか?cluster
モジュールを使用すると結果が良くなるはずではありませんか? 仕様: Windows 7 x64、デュアルコア P8700 2.53Ghz、4GB RAM、Node.js 0.10.5、ab 2.3。テスト コマンド ラインはab -n 10000 -c 1000 http://127.0.0.1:8080/
.
ベンチマーク結果 ~ 2840.75 リクエスト/秒:
クラスタ モジュールを使用する場合:
...そして同じベンチマークでは、結果は最悪です: 849.64 reqs/sec :
linux - Apache Bench の「接続」時間が長い
APIサーバーでApacheベンチを使用して非常に簡単なベンチマークを実行しようとしています.Webサーバーの負荷テストには理想的なツールではないことはわかっていますが、それは重要ではありません.
いくつかのサーバーといくつかの VM (これらのサーバーでホストされています) があります。それらはすべて、nginx、uwsgi、cherrypy webapp の同じスタックを実行しています。新しいサーバー (VM なし) で apachebench を実行すると、結果は次のようになります。
ここで奇妙なのは、ご覧のとおり、ほとんどのリクエストが 12 ミリ秒以内に処理されることです。しかし、一部のリクエストには 10 倍以上の時間がかかっています。どうやら、問題は「接続」フェーズにあるようです。
他のサーバーまたは VM にクエリを実行する任意のサーバーまたは VM から、この効果を確実に再現できます。ただし、localhost に対するクエリは常に高速です。
また、スロー リクエストは均一に分散されているように見えます。ab (同時実行設定 1) で 50 リクエストしか実行していない場合でも、スロー リクエストがいくつか発生します (ただし、数回の試行が必要な場合もあります)。
問題をさらに特定するために、まったく同じ動作を示すnginxのhello worldページに対するベンチマークだけを知っています(したがって、これは私たちのアプリではありません)。
この問題に最初に気付いたとき、膨大な数の 'TIME_WAIT' 接続にも気付きました。いくつかの sysctl フラグを微調整してみました。TIME_WAIT はかなり少なくなりましたが、問題は解決しません。
あらゆる種類のsysctl設定を試しましたが、役に立ちませんでした。
すべてのサーバーは、Intel プロセッサを搭載した適度に新しいマシンであり、すべて Ubuntu サーバーを実行しますが、バージョンが異なります: 10.10、12.10、および 13.04。
完全を期すために、2 つの Google Compute Engine VM で nginx のフロントページに対して同じベンチマークを実行しようとしましたが、同じ動作は表示されません。
情報が不足している場合は、喜んで投稿を修正します:)。
編集:
クロックを ntpdate と同期した後、ホスト 3 からホスト 4 へのソケットを開き、再び閉じる Python スクリプトを実行しました。プロセスに 0.5 秒以上かかった場合は、正確な時間枠が記録されます。両方のサーバーで tcpdump を実行しているときにこれを実行しました。これは出力の一部です。ある時点で、いくつかのパケットを転送するのに約 1 秒かかることに注意してください。問題は、これらの結果をどのように解釈すればよいか、私にはよくわからないということです。
ホスト 3:
Host-4 (ほぼ同じ時間枠):