Я использую 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.
Вы не должны отключать его, вы пропустите важные параметры трассировки стека и отладки. Здесь это показывает, что была некоторая проблема с обратной записью страницы в файловой системе ext3, и страница, которая записывалась, была заблокирована. Задача, отвечающая за запись страницы, была pdflush, и она перешла в состояние D, что означает ожидание завершения ввода-вывода. Пока ввод-вывод не завершен, его нельзя прервать, так как он находится в состоянии D. Когда pdflush переходит в состояние D, замораживание сервера является вполне естественным, поскольку именно поток ядра отвечает за запись грязных страниц на диск.
Итак, возможные подсказки. Вы пишете слишком много грязных данных, проверьте состояние вашей памяти. найти /proc/meminfo
знать это.
Если вы не пишете слишком много грязных данных, то могут быть другие проблемы. Трассировка стека не показывает ничего, кроме этого. У тебя есть другие следы.
Если у вас есть поддержка сервера, вы можете это сделать echo 1 > /proc/sys/kernel/hung_task_panic
. Это создаст vmcore в следующий раз, когда истечет время ожидания зависшей задачи. Для этого вам нужно установить kdump. Следите за статьями Red Hat или любыми уважаемыми блогами о Linux, чтобы сделать это. Из vmcore можно узнать точную причину. Помимо этого, это просто наблюдение за следом и предположения.
Взгляните на смарт HDD. Похоже, возникла проблема с файловой системой или оборудованием жесткого диска.