首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以每秒1000次请求识别静态文件服务器上的瓶颈

以每秒1000次请求识别静态文件服务器上的瓶颈
EN

Server Fault用户
提问于 2011-07-09 01:47:46
回答 2查看 538关注 0票数 2

这是困扰我很长时间的事情,我真的希望有人能帮助我。

我将保持它的简短和简单:我有一个文件服务器(2x双核Xeon2.0,8GB RAM,132 SCSI ),它承载了数千个小型图像文件,4-10 up,每秒处理1000+请求。

我试过Apache、Nginx和Lighttpd,发现Lighttpd最适合这项工作。

当web服务器关闭时,一个简单的HD基准测试显示,它可以以170兆/秒的速度读取。然而,当网络服务器打开并提供大约30兆字节/秒的服务时,这个相同的高清基准显示,HD的读取速度仅为5兆/秒,而不是像我这样的虚拟人所期望的140兆/秒(170 - 30)兆字节/秒。

现在,即使是1000个请求/秒,CPU也做得很好(负载低于1),并且有足够的空闲内存,这使我相信瓶颈实际上是HD。

所以,我的问题是,为什么?为什么当通过web服务器提供数据时,能够以170兆/秒的速度读取瓶颈的HD仅为30 web/秒?

我的第一个猜测是,一次查找和处理数千个文件完全破坏了HD的性能,而不是像那些基准测试那样一次只读/写一个文件。

对吗?如果是的话,我如何解决这个问题呢?突袭?更多的HDs?SSD?

提前感谢!

EN

回答 2

Server Fault用户

发布于 2011-07-09 02:51:53

这听起来确实像是在饱和磁盘的I/O功能。一个15K的RPM磁盘每秒可以执行大约170 disk /O完全随机的I/O操作。当在RAID0、RAID1或RAID10数组中使用时,I/ op计数是基于数组中的驱动器数量的加法(R5和R6引入了另一个瓶颈,因此真正的吞吐量可能会从理论上降低)。如果你有96个驱动器在那里,你的理论最大值大约是16K I/O操作,秒。

旁白:把它与现在甚至中等范围的SSD进行比较,SSD可以在一个设备上处理30K的I/O操作/秒。

尽管文件系统可能有4kb的块大小,但HD可能已经足够老到有512 b扇区大小了。所以你会得到一些顺序在你的I/O为所有4-10 of的文件。即便如此,每秒1000个并发请求听起来确实会使单个磁盘饱和。您在繁忙时间进行基准测试的事实表明,5MB/s的内存不足,这一事实告诉我,您正在对磁盘进行饱和。

如果您的数据集足够小,那么单个SSD (或R1镜像中的一对SSD)将足够快,无需为缓存增加内存。如果"132 SCSI HD“实际上是”132 If HD",那么您就进入了‘多少可以负担’的SSD价格范围。

票数 3
EN

Server Fault用户

发布于 2011-07-09 01:52:46

你的问题确实很可能是寻找开销。有两个主要的解决办法:

  • 添加足够的RAM,以适应您的工作集到内存是理想的方法,并相当便宜的这些天。即使看起来您有足够的RAM,问题是没有足够的缓存RAM,这通常不会显示为“已使用”。
  • 否则,SSD比普通硬盘更快地寻找,如果你有一个工作集太大,不能容纳RAM (即,太大,你的主板的RAM限制,或将比相同数量的普通RAM便宜)。

RAID10、RAID1或RAID0 (危险:丢失一个驱动器会杀死数组)可以帮助将读取访问划分为多个硬盘驱动器,从而提高平均访问时间,但这只是Nx的改进(N是正在使用的驱动器数量),因此应该考虑添加RAM。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/288528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档