因此,我们运行的是 Ubuntu 10.04 - 全部 64 位。内核 2.6.36 和 2.6.38-15 存在同样的问题。
问题是随机 VPS 服务器挂了。我们在这个特定主机上大约有 30 个实例。它冻结了,日志中没有任何内容 - 无论是在 dmesg、kernel.log、syslog 还是其他地方。日志配置正确。
然而,在这次崩溃期间,控制台中出现了多个“任务挂起 120 秒”错误。系统显然无法在这次崩溃期间写入。我们有两种类型的服务器,Java webapp 服务器和 MySQL 服务器。
这两种类型的服务器都出现了错误“task flush-2**/java/kjournald 被阻塞超过 120 秒”。即使在没有安装 Java 应用程序的服务器上,也会出现“mysqld 被阻塞超过 120 秒”的情况。每隔几天就会出现一次。
内存使用率正常。几乎没有使用交换。但每隔几天,当负载峰值发生时,在 8-10 负载平均值之间 - 随机服务器/vps 实例会因错误而冻结。已经完成了 100 平均值(8 核上 800%)的负载测试,也进行了 I/O 压力测试。崩溃期间 IO 等待时间正常。我们似乎无法通过压力测试复制此问题。
MySQL 系统有 8 个核心(2 个 CPU) - Java 应用服务器有 2 个核心系统 - 全部为 Intel Xeon。它们显然也位于不同的 Xen 父服务器上。ISP 表示没有已知的硬件问题,其他“客户”运行良好。他们也不知所措。我能做些什么来找出问题所在?当发生此崩溃时,没有核心转储,也没有系统可以写入的任何东西。
我尝试更改 I/O 调度程序,并取得了一些进展。某些服务器上的默认设置是 CFQ 和 Deadline,我已将调度程序更改为 noop,并取得了一定程度的成功,但服务器仍然崩溃。fstab 为“/dev/xvda3 / ext3 errors=remount-ro 0 1”
所有服务器都已打上补丁、安装了防火墙,日志中也没有任何异常。Fsck 已完成。根据 dmesg 显示,Xen 版本为 3.4。我们使用 XYMON 进行监控,在崩溃前,TOP、内存等似乎都正常。
我还发现另一个奇怪的现象,即时钟设置与系统负载一致。
在图表中,CPU 负载平均值与更高的时钟偏移一致 - 因此 ntpudate 需要每 5 分钟运行一次。这对于负载来说正常吗?或者这可能是硬件问题?
有什么办法可以找出造成这种情况的原因吗?
蒂亚
答案1
您有任何类型的监控设置(Zenoss、Icinga、Nagios)吗?其中任何一个都会给您提供大量信息,尤其是取决于它们的配置方式。如果某个进程有内存泄漏或正在失控,我不会感到惊讶。您可以设置一些快速而粗糙的监控,这可能会给您一些信息:
# top -d 5 > /var/log/top.out
答案2
除了控制台中看到的内核消息外,它还显示如下错误:
BUG: soft lockup - CPU#2 stuck for XXXXXXXXXs! [process:XXXX]
如果是的话请看一下:http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=556030
最后一条注释提供了一种启用更详细日志记录的方法,这样您就可以看到导致问题的原因。但是,这需要对内核进行一些修改和重新编译。