负载和磁盘块等待突然达到峰值

负载和磁盘块等待突然达到峰值

您好,高级服务器大师!

我正在运行一个 Ubuntu 服务器,它托管一个 apache tomcat 服务和一个 MySQL 数据库。即使在一周中最繁忙的时段,服务器负载也始终接近于零。尽管如此,我每周还是会遇到 1-2 次随机挂断的情况,整个服务器都会停止响应。

这次封锁的一个有趣影响是,所有 cronjobs 似乎都比计划的执行时间晚,至少各种系统日志中的时间戳表明了这一点。因此,在我看来,确实是整个服务器都冻结了,而不仅仅是作为 tomcat 服务的一部分运行的自定义软件。挂断通常持续约 3-5 分钟,之后一切都恢复正常。

Hardware:
Model: Dell PowerEdge R720, 16 cores, 16 GB ram
HDD-configuration: Raid-1 (mirror)

Main services: 
apache tomcat, mysql, ssh/sftp

#uname -a
Linux es2 2.6.24-24-server #1 SMP Tue Jul 7 19:39:36 UTC 2009 x86_64 GNU/Linux

运行 sysstat 后,我​​可以看到平均负载和磁盘块等待时间都出现了巨大的峰值,这与客户报告后端系统问题的时间完全对应。以下是 sar 的磁盘使用情况图,其中 12:30 左右出现了非常明显的峰值。

我非常抱歉把这个放在外部服务器上,但我的声誉太低,无法直接在这里包含文件。而且我必须把它们放在一起,因为我只能发布一个链接:S

Sar 图:http://213.115.101.5/abba/tmpdata/sardata_es.jpg

图 1:阻塞等待,注意 util% 如何在约 12.58 处上升到 100%

图2:块传输,没有什么不寻常的。

图 3:平均负载、峰值与图 1 的对比

图4:CPU使用率仍然接近0%。

图 5:内存,没什么不寻常的

有谁知道什么会导致系统出现这种影响?正如我之前所解释的那样,服务器上运行的唯一软件是带有 SOAP 接口的 tomcat 服务器,以允许用户连接到数据库。远程应用程序也通过 SSH 连接到服务器以提取和上传文件。在繁忙时段,我猜我们有大约 50 个并发 SSH/SFTP 连接,而通过 http(soap/tomcat)的连接不超过 1-200 个。

通过 Google 搜索,我发现了有关文件句柄和 inode 句柄的讨论,但我认为这些对于 2.6.x 内核来说是正常的。有人不同意吗?

cat /proc/sys/fs/file-nr
1152    0       1588671
cat /proc/sys/fs/inode-state
11392   236     0       0       0       0       0

同时“sar -v”显示了上述挂断时的值,但此处的 inode-nr 与上述值相比始终非常高。

12:40:01    dentunusd   file-nr  inode-nr    pty-nr
12:40:01        40542      1024     15316         0
12:45:01        40568      1152     15349         0
12:50:01        40587       768     15365         0
12:55:01        40631      1024     15422         0
13:01:02        40648       896     15482         0
13:05:01        40595       768     15430         0
13:10:01        40637      1024     15465         0

我在两个运行相同硬件、操作系统、软件、raid 配置等设置的独立服务器上看到了这种情况。因此,我相信它更多地依赖于软件/配置,而不是硬件。

非常感谢您抽出时间
/Ebbe

答案1

这些问题与 Ubuntu 8.04 LTS(Hardy)和 Dell PERC 6/i RAID 控制器之间的不兼容问题有关,如下面这个错误所报告的:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/607167 升级到 Ubuntu 10.04 LTS Lucid(内核 2.6.32)可解决该问题。

以防其他人遇到同样的问题。

答案2

可能是你正在运行一些繁重的查询,这些查询正在进行全表扫描。你检查过慢查询日志吗?

如果是这种情况,只需添加适当的索引。

附言:如果您已经这样做了,请见谅。

相关内容