web-dev-qa-db-ja.com

Apache Benchmarkは、パブリックネットワークからは低速であり、ローカルでは大幅に高速です。これをスピードアップするために私がすることは何ですか?

私はLinodeUbuntu 14 64ビットサーバーをテストしています。これは、それらから利用できる最も基本的なサーバーです。私はApacheBenchmarkを使用してサーバーをテストし、Pythonで作成したマルチスレッドスクリプトも使用していますが、それについては後で詳しく説明します。 ABを使用すると、サーバー自体からローカルで実行した場合、1秒あたり約7kのリクエストが発生しますが、別のネットワーク/インターネットから実行した場合は約15のみであることに気付きました。ローカルでの1000の同時接続の応答時間も約150ミリ秒です。リモートでの応答時間は、100の同時接続で約1.5〜2.5秒です。リモートテストを実行しているネットワークには十分な帯域幅があり、実行しているコンピューターには十分なRAMとプロセッサー速度があります。それは高速なビジネスネットワークです。他の2台のコンピューターで、米国中の他の2つのネットワークを試しましたが、速度はほぼ同じです。

マルチスレッドスクリプトを実行しているときに、100を超える同時リクエストを試行するとすぐに問題が発生することに気付きました。これは、外部ネットワークからのものです。 サーバー上のPythonを3+にアップグレードするか、スクリプトを2.7互換に変更する必要があるため、サーバーでローカルにスクリプトを試していません。 これをローカルでテストし、最大1000のマルチスレッド接続でスクリプトを実行すると150ミリ秒の応答時間を取得しました。これは、単にurllib2を使用しているだけです。

私はこれをnginxに対して直接(静的ファイル)、nginxの背後にあるpywsgiアプリ、およびpywsgiに対して直接テストしています。 pywsgiアプリには、基本的な応答で応答する単純なルートがあるため、高速である必要があります。当然のことながら、nginx-> pywsgiは、おそらくリクエストのバッファリング方法が原因で、最良の結果を提供します。この問題を引き起こしているLinodeのネットワークに固有の何かがありますか?内部テストと外部テストの桁違いは、何が原因であるのか疑問に思います。邪魔になる他の唯一のものはiptablesファイアウォールで、http/sとsshでフィルタリングするだけです。

dmesgには私のテストに関する情報がありません。

3
scape

デスクトップマシンとLinodeマシンの間のどこかにネットワークのボトルネックがあるようです。いくつかの提案:

  1. デスクトップからLinode、およびgoogle.comやyahoo.comなどのインターネット上の他の場所へのping時間を比較します。
  2. 使用する traceroute your-linode-ipデスクトップから、ボトルネックを見つけるのに役立つかどうかを確認します。
  3. http://www.webpagetest.org/ 東海岸と西海岸の両方の場所を選択してLinodeを試して、それらがどのように変化するかを確認してください。
1
Mark Stosberg