【发布时间】:2012-12-23 14:42:46
【问题描述】:
我最近在两台服务器之间迁移(最新的规格较低),即使服务器上没有负载,它也会一直冻结,以下是我的规格:
HP DL120G5 / Intel 四核 Xeon X3210 / 8GB RAM
free -m 输出:
total used free shared buffers cached
Mem: 7863 7603 260 0 176 5736
-/+ buffers/cache: 1690 6173
Swap: 4094 412 3681
如您所见,交换中有 412 mb ysed,而几乎 80% 的物理内存可用
我不知道这是否会造成任何麻烦,但在我的旧服务器中几乎没有使用交换,所以我认为这似乎不对。
我有 cPanel 许可证,所以我联系了他们的支持,他们注意到我的 iowait 很高,是的,当我运行 sar 时,我注意到它有时超过 60%,通常是 20%,但有时会达到 60% 甚至 70 %
我真的不知道如何诊断,我怀疑我的驱动器速度很慢,这可能会导致延迟,所以我使用 dd 进行了测试,速度为 250 mb/s,所以我认为传输速度还可以加上硬件应该是全新的。
高负载通常发生在我使用 gzip 或 tar 提取文件(备份或恢复 cpanel 帐户)时。
要提到的重要一点是,top 报告 mysql 正在使用 100% 到 125% 的 CPU,有时它会达到更多,如果我跟踪 mysql 进程,我会不断收到此错误:
setsockopt(376, SOL_IP, IP_TOS, [8], 4) = -1 EOPNOTSUPP(不支持操作)
我不知道这意味着什么,也没有通过谷歌搜索得到有用的信息。
我忘了提到它是一个物有所值的网络托管服务器,因此它具有网络托管的标准设置(apache、php、mysql .. 等)
那么我该如何正确诊断这个问题并找到解决方案,或者可能的原因是什么?
【问题讨论】:
-
有了 8Gb 的 RAM,你真的需要交换吗?
-
而且,setsockopt() 是一个网络函数,这意味着您应该检查您的 MySQL 实例日志以了解与操作有关的更普遍的错误。
-
说到交换,内核很聪明。如果某些代码或其他内存确实没有被使用,内核仍会将其分页以为磁盘缓存腾出更多内存空间,从而提高性能。
-
@L0j1k:我在一台有 8gigs 的家用电脑上,如果没有交换,我永远不会去。由于上述原因,它实际上可以提高性能。
-
@Linuxios 我运行的是完全相同的设置,并且只使用了大约 40 mb 的交换空间,所以我假设交换空间使用量的增加并不是这个确切问题的内核智能的一部分:) ,我禁用了交换,我将拭目以待!但我开始认为这可能与手头的问题无关