服务器冻结,并突然加载非常高

我在CentOS 5.7上,服务器冻结了很多,日志显示如下输出:

Dec 26 18:33:51 server kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. Dec 26 18:34:00 server init: Switching to runlevel: 6 Dec 26 18:34:00 server kernel: pdflush D 0000098C 2492 206 19 207 204 (L-TLB) Dec 26 18:34:00 server kernel: f7c02e04 00000046 6e39208c 0000098c f138e27c 0000003b cee0e5c0 0000000a Dec 26 18:34:00 server kernel: c35ff550 6e3a00e8 0000098c 0000e05c 00000001 c35ff65c c3419944 f7aca740 Dec 26 18:34:00 server kernel: 00000001 00000000 c041f0c8 00000000 0140f282 c042d86b f7f1e81c ffffffff Dec 26 18:34:00 server kernel: Call Trace: Dec 26 18:34:00 server kernel: [<c041f0c8>] __wake_up+0x2a/0x3d Dec 26 18:34:00 server kernel: [<c042d86b>] getnstimeofday+0x30/0xb6 Dec 26 18:34:00 server kernel: [<c06242f8>] io_schedule+0x36/0x59 Dec 26 18:34:00 server kernel: [<c04586d2>] sync_page+0x0/0x3b Dec 26 18:34:00 server kernel: [<c045870a>] sync_page+0x38/0x3b Dec 26 18:34:00 server kernel: [<c062440a>] __wait_on_bit_lock+0x2a/0x52 Dec 26 18:34:00 server kernel: [<c045864d>] __lock_page+0x52/0x59 Dec 26 18:34:00 server kernel: [<c0437420>] wake_bit_function+0x0/0x3c Dec 26 18:34:00 server kernel: [<c049811e>] mpage_writepages+0x135/0x308 Dec 26 18:34:00 server kernel: [<f8895bb6>] ext3_ordered_writepage+0x0/0x166 [ext3] Dec 26 18:34:00 server kernel: [<c045d7b0>] do_writepages+0x2b/0x32 Dec 26 18:34:00 server kernel: [<c04968a7>] __writeback_single_inode+0x166/0x2a5 Dec 26 18:34:00 server kernel: [<c0496cca>] sync_sb_inodes+0x17e/0x221 Dec 26 18:34:00 server kernel: [<c0496f19>] writeback_inodes+0x6a/0xb0 Dec 26 18:34:00 server kernel: [<c045dbac>] background_writeout+0x71/0xc3 Dec 26 18:34:00 server kernel: [<c045e10f>] pdflush+0x0/0x1a1 Dec 26 18:34:00 server kernel: [<c045e21a>] pdflush+0x10b/0x1a1 Dec 26 18:34:00 server kernel: [<c045db3b>] background_writeout+0x0/0xc3 Dec 26 18:34:00 server kernel: [<c043732e>] kthread+0xc0/0xee Dec 26 18:34:00 server kernel: [<c043726e>] kthread+0x0/0xee Dec 26 18:34:00 server kernel: [<c0405c87>] kernel_thread_helper+0x7/0x10 Dec 26 18:34:00 server kernel: ======================= 

什么可以导致这些消息? 我该如何解决这个问题?

可能是由于成千上万的原因。 这个hung_task参数是从RHEL 5.5开始引入的。

你不应该禁用它,你会错过重要的堆栈跟踪和debugging选项。 在这里,它表明在ext3文件系统中页面回写有问题,正在写入的页面被locking。 负责写入页面的任务是pdflush,并进入D状态,意味着等待IO完成。 在IO完成之前,它不能被中断,因为它处于D状态。 当pdflush进入D状态时,服务器的冻结是非常自然的,因为它是负责将脏页面写入磁盘的内核线程。

所以,可能的线索。 你正在写太多的脏数据,检查你的记忆状况。 find/proc/meminfo知道这一点。

如果你没有写太多的脏数据,那么可能是其他问题。 堆栈跟踪没有显示比这更多的东西。 你有其他的痕迹吗?

如果你有服务器支持,你可以这样做echo 1 > /proc/sys/kernel/hung_task_panic 。 这将在下一次达到挂起任务超时时创build一个vmcore。 你需要为此设置kdump。 按照红帽文章或任何可敬的Linux博客来做到这一点。 从vmcore,确切的原因可以发现。 除此之外,它只是看到了痕迹和猜测的事情。

看看HDD的智能。 看起来像文件系统或硬盘的硬件有问题