EBS によって完全にサポートされている AWS サーバーで nginx の正しいチューニングを見つけようとしています。基本的な問題は、約 100 MB の静的ファイルをダウンロードするときに、一貫して約 60K/秒のダウンロード速度が見られることです。scp を使用して AWS サーバーから同じファイルをコピーすると、約 1MB/秒のレートが表示されます。(そのため、ここで EBS が機能するかどうかはわかりません)。
最初は、基本的にすぐに使える構成(CentOS 6.x用)でnginxを実行していました。しかし、速度を上げようとして、さまざまなチューニング パラメータを試してみましたが、役に立ちませんでした。速度は基本的に同じままです。
現時点での私の構成からの関連フラグメントは次のとおりです。
location /download {
root /var/www/yada/update;
disable_symlinks off;
autoindex on;
# Transfer tuning follows
aio on;
directio 4m;
output_buffers 1 128k;
}
当初、これらのチューニング設定は次のとおりでした。
sendfile on;
tcp_nopush on;
tcp_nodelay on;
大量のトラフィックを最適化しようとしているわけではないことに注意してください。一度にダウンロードできるクライアントは 1 つだけである可能性があります。AWS サーバーは、617MB のメモリを備えた「マイクロ」インスタンスです。とにかく、scp が ~1MB/s でダウンロードできるという事実は、HTTP がそのスループットに匹敵するか、それを上回ることができるはずだと私に信じさせます。
どんな助けでも大歓迎です。
【追記】 追加情報です。ダウンロードの実行中に「top」コマンドを実行すると、次のようになります。
top - 07:37:33 up 11 days, 1:56, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 63 total, 1 running, 62 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
そして「iostat」は次を示します:
Linux 3.2.38-5.48.amzn1.x86_64 04/03/2013 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.02 0.00 0.03 0.03 0.02 99.89
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
xvdap1 0.23 2.66 8.59 2544324 8224920