你用什么样的networking服务器硬件来处理100Mbps以上的静态文件?

我目前大部分的静态文件服务需要使用Amazon S3,但是我的每月账单变得非常昂贵。 我使用日志和高峰时间做了一些粗略的计算,我最昂贵的亚马逊桶正在处理 100 180 Mbps的stream量。 大多在50K以下的图像。

S3在存储和冗余方面非常有帮助,但是如果我可以提供帮助的话,我并不需要为带宽和GET请求付费。 我在自己的数据中心有很多廉价的带宽,所以我configuration了一个nginx服务器作为caching代理,然后用大量的文件(大约240GB)启动了caching,这样我的磁盘就不会像疯了一样写空的caching。

我尝试切换, 我的服务器窒息 。

它看起来像我的磁盘是问题 – 这台机器有4个1 TB的SATA磁盘(梭子鱼XT)设置在RAID 10中。这是唯一的我手上有足够的存储空间用于此。 我很确定nginx的设置是正确的,因为我已经使用它作为另一个较小的Amazon存储区的caching代理。 假设这是单个机器的合理stream量,也许SSD是值得一试的。

如果你处理大量的静态文件服务,你使用什么硬件?

附加信息

Nginx:worker_connections = 4096,worker_rlimit_nofile 16384,worker_processes 8,open_file_cache max = 100000不活动= 60m文件系统:ext4,挂载noatime,barrier = 0,data = writeback,nobh

我不认为你的磁盘是问题。 首先nginx的ncache使用磁盘存储来caching。 因此,根据数据集的热/冷程度,磁盘速度将成为问题的一个潜在原因,然而,我认为没有理由不能用你提到的硬件提供100mb / sec的速度 – 特别是当你“重新使用nginx。

我首先猜测的是你的#工作进程是低的,你的worker_connections可能太低,你可能没有把你的open_file_cache设置得足够高。 但是,这些设置都不会导致高IO Wait和这样的高峰。 你说你正在服务<50K的图像,它看起来像你的设置的1/4可以很容易地被操作系统缓冲。 Nginx肯定没有被优化configuration。

Varnish以一种稍微不同的方式使用RAM而不是磁盘来caching问题。

很大程度上取决于你的数据集,但是根据你提供的数据,我没有看到磁盘IO有这样的原因。 你检查dmesg和日志,看看你的驱动器之一是否遇到了一些IO错误? 我认为唯一可能导致这个高峰的其他事情超过了nginx的文件caching,这将导致它不得不进入FIFO模式来打开新文件。

确保你的文件系统使用noatime进行挂载,这会减less大量的工作量。

作为一个定期处理800mb / sec的机器的例子:

# uptime 11:32:27 up 11 days, 16:31, 1 user, load average: 0.43, 0.85, 0.82 # free total used free shared buffers cached Mem: 8180796 7127000 1053796 0 1152 2397336 -/+ buffers/cache: 4728512 3452284 Swap: 8297568 237940 8059628 Quadcore Xeon: Intel(R) Xeon(R) CPU X3430 @ 2.40GHz $ ./bw.pl xxx.xxx 2010-09-01 2010-09-30 bw: 174042.60gb average 543mb/sec, peaks at 810mb/sec === START OF INFORMATION SECTION === Model Family: Seagate Barracuda 7200.12 family Device Model: ST3500418AS Serial Number: 6VM89L1N Firmware Version: CC38 User Capacity: 500,107,862,016 bytes Linux 2.6.36-rc5 (xxxxxx) 10/04/2010 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 4.33 0.00 2.40 5.94 0.00 87.33 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 109.61 19020.67 337.28 19047438731 337754190 avg-cpu: %user %nice %system %iowait %steal %idle 8.09 0.00 3.40 10.26 0.00 78.25 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 138.52 21199.60 490.02 106210 2455 avg-cpu: %user %nice %system %iowait %steal %idle 3.74 0.00 3.25 9.01 0.00 84.00 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 125.00 21691.20 139.20 108456 696 avg-cpu: %user %nice %system %iowait %steal %idle 4.75 0.00 3.12 14.02 0.00 78.11 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 154.69 19532.14 261.28 97856 1309 avg-cpu: %user %nice %system %iowait %steal %idle 6.81 0.00 3.36 9.48 0.00 80.36 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 112.80 17635.20 309.00 88176 1545 

MRTG:

http://imgur.com/KYGp6.png

数据集:

 # du -sh ads 211.0G ads # ls|wc -l 679075 

你的。 光盘。 吸。 点。

  • 尝试获得更多,更快的光盘。 SAS在这里很好,就像doe Velociraptors一样。

  • 也就是说,最好的办法是得到一个SSD。

您的光盘可能每个都有大约200 IOPS。 有了SAS,你可以达到450左右,Velocidaptors约300.高端SSD可以让你… 50.000(没有笑话 – 我的意思是5 0 0 0 0 0 0)IOPS。

做math;)一个单一的SSD,没有RAID,将是你的RAID 10的62倍;)

我们在后端配备SSD的服务器上运行大约600 Mbps,前端configurationnginx +清漆。 实际的处理器是一点Intel Atom; 我们已经有四个在每个600 Mbits / sec(使用DSR)的LB之后。 也许不适合所有情况,但是对我们的用例来说,这是完美的。

你正在使用的机器是否有足够的RAM来将工作集文件caching在RAM中?

另外 – 你有没有看过像油漆的东西? Nginx非常适合处理大量的连接,但在caching和系统性能方面并不是最终的。

添加更多的磁盘。 您可以交换单个磁盘的速度与磁盘数量(达到某个点):也许你可以得到与X昂贵的SAS 15kRPM磁盘相同的性能,或与(猜测,无意义的价值)X * 2便宜的SATA 7k2RPM磁盘相同的性能。 你必须做你的math,看看你有什么更好的 – 这也取决于你在数据中心支付多less机架空间和电力。

SSD将为您提供所有您需要的IOPS,但是对于大容量存储来说,这些IOPS并不便宜(这就是为什么他们的主要用例是工作负载等数据库)。