
私はこれを Stack Overflow で質問しましたが、おそらくこれは SF チーム向けの質問でしょう。
次のような記事がたくさんありましたこれです最近、軽量フロントエンド Web サーバーと組み合わせて使用した場合の Django Static Generator の利点を称賛しています。これは私にとって非常に理にかなっています。
しかし、他の人が報告しているような結果 (1 秒あたり数千件のリクエスト) はまったく得られず、その理由がわかりません。
私は新聞社の Web サイトの再設計を開始する準備をしています。現在、テスト サーバーで Static Generator を使用しています。特定の静的ページで Apache Bench を実行すると、非常に悲惨な結果になります。
ab -c 10 -n 1000 http://journal.streamlister.com/news/
Concurrency Level: 10
Time taken for tests: 53.011 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 21281212 bytes
HTML transferred: 21067360 bytes
Requests per second: 18.86 [#/sec] (mean)
Time per request: 530.107 [ms] (mean)
Time per request: 53.011 [ms] (mean, across all concurrent requests)
Transfer rate: 392.04 [Kbytes/sec] received
包囲攻撃が行われている間、サーバーを監視していますtop
が、Apache やデータベース サーバーにはまったくアクセスしていないことがわかります。つまり、実際にはキャッシュされたページが提供されています。Nginx は実行されていますが、メモリ使用量が 2% を超えることはありません。CPU は約 95% アイドル状態のままです。
何が間違っているのでしょうか?nginxの設定を間違えたのでしょうか?私のメインの設定ファイルは以下に貼り付けてあります。このサイトに固有のインクルードは、静的ジェネレータホームページSlicehost 256k スライスで Ubuntu 9.10 を実行しています。
user not_my_real_username;
worker_processes 4;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 8192;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
#tcp_nopush on;
keepalive_timeout 0;
#keepalive_timeout 65;
tcp_nodelay on;
gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
答え1
次のオプションを構成に追加するだけで、nginx のパフォーマンスを向上させることができます。
http {
open_file_cache max=1000 inactive=300s;
open_file_cache_valid 360s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
}
答え2
ab
実際に、nginx は適切な速度でファイルを処理しています。外部マシンから、そのページの CSS ファイルの 1 つで1 秒あたり 371 件のリクエストを取得できました。
ページ全体をテストしているので、ページに対して 22 回のリクエストを行っています。ベンチマークでは、1 秒あたり約 40 件のリクエストを取得できましたhttp://journal.streamlister.com/news/
。
おそらくもっと高速になるかもしれませんが、CPU とディスク I/O を他のユーザーと共有している VPS を使用しています。
答え3
gekkz さんの意見に同意せざるを得ませんが、これは VPS の問題かもしれません。静的ファイルの 1 つで AB テストを実行したところ、次の結果が得られました。
転送された合計: 11203000 バイト
転送された HTML: 10861000 バイト
1秒あたりのリクエスト数: 674.14[#/秒] (平均)
リクエストあたりの時間: 14.834 [ミリ秒] (平均)
リクエストあたりの時間: 1.483 [ミリ秒] (平均、すべての同時リクエスト全体)
転送速度: 受信 7375.39 [キロバイト/秒]
これはCSSファイルでした。私もlinode.comのVPSを利用しています。最近のブログ記事によるといくつかのテスト興味深いと思われるさまざまな VPS で実行されます。
確認したところ、私の設定ファイルはほんの少しだけ異なっています。 2 つのプロセスが設定され、1024 の接続があり、keep_alive がオンになっています。
答え4
テスト パラメータが問題だと思います。最大同時実行数は 10 ですが、各ページの配信に合計で約 500 ミリ秒かかるため、1 秒あたり最大で約 20 件のリクエストが表示されます。
ab を使用して、より高い同時実行レベルでテストしましたか? (ab は Web アプリケーションの負荷テスト用の非常に単純なツールであり、実際には「マイクロベンチマーク」としか考えられないことに注意してください)。帯域幅やメモリが問題になる場合は、別のマシン (おそらく複数のマシン) からベンチマークを行う必要があります。