linux – 您使用什么类型的Web服务器硬件来处理100 Mbps的静态文件?

我目前使用Amazon S3来满足我的大部分静态文件服务需求,但我的每月账单变得非常昂贵.我使用日志做了一些粗略的计算,在高峰时段,我最昂贵的亚马逊桶正在处理大约100 180 Mbps的流量.大多数图像低于50K.

S3在存储和冗余方面非常有用,但如果我能帮助它,我真的不需要为带宽和GET请求付费.我在自己的数据中心有足够的廉价带宽,所以我将Nginx服务器配置为缓存代理,然后使用我的大部分文件(大约240 GB)启动缓存,这样我的磁盘就不会像疯了一样写空缓存.

我试过切断我的my server choked.

看起来我的磁盘是问题 – 这台机器在RAID 10中设置了4 x 1 TB SATA磁盘(Barracuda XT).这是我手头上唯一拥有足够存储空间的东西.我非常肯定Nginx已经正确设置,因为我已经将它用作另一个较小的亚马逊存储桶的缓存代理.假设这对于单台机器而言是合理的流量,那么SSD可能值得一试.

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

附加信息

文件系统:ext4,安装noatime,barrier = 0,data = writeback,nobh(我在控制器上有备用电池)Nginx:worker_connections = 4096,worker_rlimit_nofile 16384,worker_processes 8,open_file_cache max = 100000 inactive = 60m

解决方法

我不认为你的磁盘是问题.首先,Nginx的ncache使用磁盘存储进行缓存.因此,根据您的数据集的热/冷程度,磁盘速度将成为问题的一个潜在原因,但是,我认为您没有理由不能使用您提到的硬件提供100mb /秒 – 特别是如果您’重新使用Nginx.

我猜的第一件事是你的工作进程数量很少,你的worker_connections可能太低了,你可能没有把你的open_file_cache设置得足够高.但是,这些设置都不会导致高IO等待或类似尖峰.你说你正在提供< 50k图像,看起来你的设备的1/4很容易被操作系统缓冲. Nginx肯定没有最佳配置. Varnish以稍微不同的方式使用RAM而不是磁盘来处理问题. 很大程度上取决于您的数据集,根据您提供的数据,我认为没有任何理由让磁盘IO像这样尖刺.你检查了dmesg和日志,看看你的某个驱动器当时是否遇到了一些IO错误?我能想到的另一件可能导致峰值的事情是超出了Nginx文件缓存,这会导致它必须进入FIFO模式打开新文件. 确保您的文件系统安装了noatime,这应该会减少相当数量的写入工作量. 作为定期处理800mb /秒的机器的示例:

# 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

相关文章

insmod和modprobe加-f参数导致Invalid module format错误 这...
将ArchLinux安装到U盘 几个月前入门Arch的时候上网搜了不少安...
1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...
如何抑制stable_secret读取关键的“net.ipv6.conf.all.stabl...