繁体   English   中英

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

[英]Performance Issue on Nginx Static File Serving 10Gbps Server

我正在使用Nginx在专用服务器上服务静态文件。 该服务器没有网站,它只是一个文件下载服务器。 文件大小从MB到GB。

以前,在unmetered.com上有8台500 Mbps的专用服务器。 他们每个人都表现出色。

我想从FDCServers购买10Gbps服务器。 因为一台比多台服务器更易于管理。

以下是服务器的规格:

双Xeon E5-2640(15M高速缓存,2.50 GHz,7.20 GT / s英特尔®QPI)-24核128 GB RAM 10 Gbit / s网络未计量Ubuntu 14.04 LTS 1.5 TB SATA

但是我的新巨型服务器的速度不能超过500到600 Mbps。 我安装了nload来监视流量和上传/下载速度。 报告的结果几乎与以前的unmetered.com服务器相同。

然后我认为这可能是由于SATA硬盘的读取速率限制所致。

因此,我在New Powerful服务器中购买并安装了3 X 240 GB SSD驱动器。

我将文件移至SSD驱动器并下载以进行测试。 速度还是不好。 我只有250到300 Kbps。 而它应该给我至少2Mbps(这是我放置在Nginx配置文件中的每个IP的速度限制)。

然后,我搜索了千兆以太网调整设置。 找到了几个需要针对10Gbps网络进行调整的sysctl设置。

http://www.nas.nasa.gov/hecc/support/kb/Optional-Advanced-Tuning-for-Linux_138.html

我实现了它们,但吞吐量仍然与以前的500Mbps服务器相同。

您能帮忙提高此服务器的网络吞吐量吗? 我询问了FDCServer支持团队,他们确认他们的服务器可以轻松提供3到5 Gbps,并且无法帮助我对其进行调整。

经过所有的调整和设置,我最多只能得到700Mbit。

让我知道您是否需要更多详细信息。

执行测试记忆:

用于DDR3 1333MHz PC10600

$ 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%

使用帮助管道测试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

cheking:

$ 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;

祝好运

我认为您需要拆分问题并进行独立测试以确定真正的问题-猜测是磁盘,如果是网络,则花数百或数千购买新磁盘是没有用的。 您有太多的变量只能随机更改-您需要分而治之。

1)要测试磁盘,请使用磁盘性能工具或较旧的dd来度量吞吐量(以字节/秒为单位)和延迟(以毫秒为单位)。 从磁盘读取数据块并写入/dev/null以测试读取速度。 /dev/zero读取数据块并写入磁盘以测试写入速度-如有必要。

您的磁盘是否被RAID? 并拆分成多少个控制器?

2)要测试网络,请使用nc (又名netcat )并通过对网络进行测试以查看所测量的吞吐量和延迟。 /dev/zero读取数据块,并通过nc跨网络发送。 从网络读取数据块,然后丢弃到/dev/null进行另一方向的测试。

3)要测试您的nginx服务器,请将一些静态文件放在RAMdisk上,然后您将与物理磁盘无关。

只有这样,您才知道需要调整的内容...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM