Nginx静态文件服务10Gbps服务器的性能问题

ewm0tg9j  于 5个月前  发布在  Nginx
关注(0)|答案(3)|浏览(84)

我正在使用Nginx在专用服务器上提供静态文件。服务器没有网站,它只是一个文件下载服务器。文件大小从MB到GB不等。
以前我有8个专用服务器与500 Mbps的unmetered.com。他们每个人都表现出色。
我想从FDCServers买一台10 gbps的服务器。因为一台服务器比多台服务器更容易管理。
下面是服务器的规格:
Dual Xeon E5-2640(15M Cache,2.50 GHz,7.20 GT/s Intel® QPI)- 24 Cores 128 GB RAM 10 Gbit/s Network Unmeteored Ubuntu 14.04 LTS 1.5 TB SATA
但是我的新巨型服务器的速度不超过500到600 Mbps。我安装了nload来监控流量和上传/下载速度。它的报告几乎与以前的unmetered.com服务器相同。
然后我认为这可能是由于SATA硬盘的读取速率限制。
所以我购买并安装了3 X 240 GB的SSD驱动器在新的强大的服务器.
我将文件移动到SSD驱动器并下载它用于测试目的.速度仍然不好.我得到只有250至300 Kbps.而它应该给我至少给予2 Mbps(这是我放在Nginx配置文件中的每个IP的速度限制).
然后我搜索了千兆以太网调整设置。发现几个sysctl设置,需要调整为10 Gbps网络。
http://www.nas.nasa.gov/hecc/support/kb/Optional-Advanced-Tuning-for-Linux_138.html
我实现了它们,但吞吐量仍然与我以前的500 Mbps服务器相同。
你能帮助提高这个服务器的网络吞吐量吗?我问了FDCServer支持团队,他们证实他们的服务器可以很容易地给予3到5 Gbps,他们不能帮助我调整它。
经过所有的调整和设置,我得到最多只有700兆比特。
如果你需要更多的细节就告诉我。

wvt8vs2t

wvt8vs2t1#

执行内存测试:
适用于DDR3 1333 MHz PC 10600

$ dd if=/dev/zero bs=1024k count=512 > /dev/null
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 0.0444859 s, 12.1 GB/s

字符串
测试磁盘IO:

$ pv ./100MB.bin > /dev/null
 100MiB 0:00:00 [3.36GiB/s] [=================================================================================================================================================================================>] 100%


使用help pipe测试cpu速度:

$ dd if=/dev/zero bs=1024k count=512 2> /dev/null| pv > /dev/null
 512MiB 0:00:00 [2.24GiB/s] [   <=>                                                                                                                                                                                             ]


从本地主机下载nginx速度应该是~1.5-2 GB/s
检查:

$ wget -O /dev/null  http://127.0.0.1/100MB.bin
--2014-12-10 09:08:57--  http://127.0.0.1:8080/100MB.bin
Connecting to 127.0.0.1:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 104857600 (100M) [application/octet-stream]
Saving to: ‘/dev/null’

100%[=======================================================================================================================================================================================>] 104,857,600 --.-K/s   in 0.06s   

2014-12-10 09:08:57 (1.63 GB/s) - ‘/dev/null’ saved [104857600/104857600]


检查此解决方案。
删除行:

output_buffers 1 512k;
aio on;
directio 512;


和改变

sendfile    off;
tcp_nopush  off;
tcp_nodelay off;


sendfile    on;
tcp_nopush  on;
tcp_nodelay on;


好运

iezvtpos

iezvtpos2#

我认为你需要把问题分开,独立地进行测试,以确定真实的问题--猜测是磁盘问题,如果是网络问题,花几百或几千块钱买新磁盘是没有用的。你有太多的变量,不能随意改变--你需要分治。
1)要测试磁盘,请使用磁盘性能工具或老式的dd来测量吞吐量(以字节/秒为单位)和延迟(以毫秒为单位)。从磁盘读取数据块并写入/dev/null以测试读取速度。从/dev/zero读取数据块并写入磁盘以测试写入速度-如果需要。
顺便问一下,你的磁盘是RAIDed的吗?在多少个控制器上分配?
2)要测试网络,请使用nc(也称为netcat)并反复测试网络以查看您测量的吞吐量和延迟。从/dev/zero读取数据块并使用nc通过网络发送。从网络读取数据块并丢弃到/dev/null以进行其他方向的测试。
3)为了测试你的nginx服务器,把一些静态文件放在RAM磁盘上,然后你将独立于物理磁盘。
只有这样你才知道什么需要调整...

crcmnpdw

crcmnpdw3#

我遇到了同样的问题。在1 Gbit时,文件下载速度高达20 Mbps/秒。更改sendfile_max_chunk参数后,速度变为最大。
变更:

sendfile_max_chunk 256k;

字符串
收件人:

sendfile_max_chunk 16M;

相关问题