我有一个文件共享网站,我的文件托pipe在这些系统规格的服务器:
32GB RAM 12x3TB 2x Intel Quad Core E5620
我在这个服务器中的文件高达4GB的每个文件。 446gb已满(/ 36TB)
[root@hosted-by ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 50G 2.7G 44G 6% / tmpfs 16G 0 16G 0% /dev/shm /dev/sda1 97M 57M 36M 62% /boot /dev/mapper/VolGroup01-LogVol00 33T 494G 33T 2% /home
看看这个:

为什么wa%这么高? (我认为是什么让服务器如此缓慢)
如何在服务器中设置磁盘,我假设您没有使用任何RAID实现来加速磁盘读/写速度(因为LVM组的磁盘使用量显示为33TB),这是您的问题。
由于以前的答案是正确的,所以“wa”表示磁盘I / O等待非常高,实际上locking了服务器,并将依赖于磁盘I / O的任何进程置于不间断的睡眠状态(进程标记为“D”顶部) – 问题是你不能通过向它们发送SIGKILL信号来清除这些进程,它们将不会响应,直到他们从磁盘得到他们想要的东西,然后它们将退出。
D状态下的进程可以通过减less磁盘I / O等待清除进程或重启服务器来清除,如果遇到需要进行文件系统检查(fsck)的操作,重启是最后一件事情。在慢速磁盘上使用33TB的数据需要很长时间,但在RAID设置上甚至需要很长的时间。
看看如何获得具有高质量RAID卡的服务器,并在RAID6中设置磁盘(如果每个服务器使用大量磁盘),这样,如果磁盘发生故障,您将获得更好的速度和冗余性,因为RAID6可以承受两个失败的硬盘,其他RAIDconfiguration可以承受1个失败的硬盘。
另外,当您有新的服务器设置时,请查看RAIDarrays运行状况监视,einarc将有助于确定RAIDarrays,并显示您的RAIDarrays是否存在任何问题。 使用RAID设置,您将牺牲一点磁盘空间,但与当前设置相比,您将获得更好的读/写速度。
如果你有12个3TB硬盘并将它们放到RAID 6configuration中,那么计算你所拥有的磁盘空间的公式是(N – 2) x (Smallest HDD size) ,所以在12个3TB硬盘上你可以有30TB空闲磁盘空间:
(12 - 2) x 3TB = 30TB
还有一个build议,如果你只是为了提供文件而使用这个服务器,我会build议转换到nginx,这将certificate自己在资源使用方面是有利的,并且与Apache服务器相比,水平。 但这取决于您的系统设置。
'wa'是等待的,这意味着你的CPU正在等待一些I / O操作来完成。 这个问题很可能与读/写磁盘文件有关。 您应该考虑根据HDD I / O操作需要调整您的系统。
在某些时候,您可能需要在多台机器上分配硬盘空间(CPU规格较低)。
另一个想法是使用SSD进行caching(尤其是如果您可以预测某些文件的使用率超过其他)。 这将需要额外的开发,但可能是最便宜的解决scheme。
在第一次阅读,它看起来像你的IO子系统是不够的任务。 我相信在排队理论中有一些说法,当你的使用率达到100%时,你的服务时间将会走向无限。 这实际上也是一个相当突然的事情,大约80%的利用率将会大大提高。
所以,还有其他一些工具可以检查:
我注意到,你似乎有一个相当低的内存可用于Linux的磁盘/块caching,虽然增加内存只会帮助你到目前为止,这是真棒,如果你可以适应你的热点设置到内存或至less一个大你的热点的一部分。 实际上,你也有一些交换的方法,这也不是一件好事,而且根据你交换的位置,它可能会有助于驱动你的IO负载。
虽然,如果你的磁盘系统的IOfunction的利用率达到或接近100%,那么现在是时候重新思考你的存储方式了,首先坐下来看看IO的function您的用户负载的要求将是(IOPS数量,读取和/或写入重量,是随机访问还是顺序访问,您的热点设置有多大等等,聚合所需带宽是多less等等),并devise一个满足上述要求的解决scheme(服务器/存储)。