我正在尝试在完全由EBS支持的AWS服务器上找出对nginx的正确调整。基本问题是当下载~100MB静态文件时,我看到一致的下载速率为~60K / s。如果我使用scp从AWS服务器复制相同的文件,我看到的速率约为1MB / s。 (所以,我不确定EBS是否会在这里发挥作用)。
最初,我运行nginx基本上是开箱即用的配置(对于CentOS 6.x)。但是为了加快速度,我玩各种调整参数都无济于事 - 速度基本保持不变。
以下是我的配置中的相关片段:
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;
注意,我并不是要为大量流量进行优化。在任何给定时间可能只有一个客户端下载。 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
答案 0 :(得分:3)
您是否考虑过打开sendfile? Sendfile允许nginx直接使用内核发送静态文件,因此它应该比任何其他选项更快。
答案 1 :(得分:2)
默认情况下,scp比HTTP连接快得多。我有一个建议给你。如果您正在提供静态文件,我更喜欢使用带有云前端的S3。这使它更快。它很难实现更好的性能,有一个文件传输。
答案 2 :(得分:0)
鉴于在同一台机器上运行良好,您会受到限制。首先使用AWS检查您的使用政策,也许它是精美的。或者,尝试不同的ISP。如果他们都给你60kB / s你知道它是AWS。