CentOS 6.9 中的内核错误

CentOS 6.9 中的内核错误

/var/log/messeges最近我在我的和中看到这些消息dmesg | less

 kernel: INFO: task flush-8:32:1065 blocked for more than 120 seconds.
 kernel:      Not tainted 2.6.32-696.el6.x86_64 #1
 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this 
 message.
 kernel: flush-8:32    D 0000000000000004     0  1065      2 0x00000000
 kernel: ffff88063389b840 0000000000000046 0000000000000000 0005120000000001
 kernel: ffff880636304ce0 ffff8806363098c0 00022e760ddb7d3a ffff88062db31360
 kernel: 0000000000011200 000000012494c97a ffff88062e0fbad8 ffff88063389bfd8
 kernel: Call Trace:
 kernel: [<ffffffff811d11e0>] ? sync_buffer+0x0/0x50
 kernel: [<ffffffff8154ae83>] io_schedule+0x73/0xc0
 kernel: [<ffffffff811d1220>] sync_buffer+0x40/0x50
 kernel: [<ffffffff8154b73a>] __wait_on_bit_lock+0x5a/0xc0
 kernel: [<ffffffff811d11e0>] ? sync_buffer+0x0/0x50
 kernel: [<ffffffff8154b818>] out_of_line_wait_on_bit_lock+0x78/0x90
 kernel: [<ffffffff810a68c0>] ? wake_bit_function+0x0/0x50
 kernel: [<ffffffff811d1540>] ? end_buffer_async_write+0x0/0x190
 kernel: [<ffffffff811d13c6>] __lock_buffer+0x36/0x40
 kernel: [<ffffffff811d26c5>] __block_write_full_page+0x305/0x330
 kernel: [<ffffffff811d1540>] ? end_buffer_async_write+0x0/0x190
 kernel: [<ffffffff811d27d0>] block_write_full_page_endio+0xe0/0x120
 kernel: [<ffffffffa0211d00>] ? buffer_unmapped+0x0/0x20 [ext3]
 kernel: [<ffffffff811d2825>] block_write_full_page+0x15/0x20
 kernel: [<ffffffffa021288d>] ext3_ordered_writepage+0x1ed/0x240 [ext3]
 kernel: [<ffffffff81142367>] __writepage+0x17/0x40
 kernel: [<ffffffff8114362d>] write_cache_pages+0x1fd/0x4c0
 kernel: [<ffffffff81009913>] ? __switch_to+0x2f3/0x340
 kernel: [<ffffffff81142350>] ? __writepage+0x0/0x40
 kernel: [<ffffffff81299899>] ? cpumask_next_and+0x29/0x50
 kernel: [<ffffffff81064054>] ? find_busiest_group+0x254/0xa50
 kernel: [<ffffffff81143914>] generic_writepages+0x24/0x30
 kernel: [<ffffffff81143955>] do_writepages+0x35/0x40
 kernel: [<ffffffff811c6f1d>] writeback_single_inode+0xdd/0x290
 kernel: [<ffffffff811c731d>] writeback_sb_inodes+0xbd/0x170
 kernel: [<ffffffff811c747b>] writeback_inodes_wb+0xab/0x1b0
 kernel: [<ffffffff811c7873>] wb_writeback+0x2f3/0x410
 kernel: [<ffffffff8154a68e>] ? schedule+0x3ee/0xb70
 kernel: [<ffffffff811c7b3d>] wb_do_writeback+0x1ad/0x250
 kernel: [<ffffffff8108f000>] ? process_timeout+0x0/0x10
 kernel: [<ffffffff811c7c86>] bdi_writeback_thread+0xa6/0x220
 kernel: [<ffffffff811c7be0>] ? bdi_writeback_thread+0x0/0x220
 kernel: [<ffffffff810a63ae>] kthread+0x9e/0xc0
 kernel: [<ffffffff8100c28a>] child_rip+0xa/0x20
 kernel: [<ffffffff810a6310>] ? kthread+0x0/0xc0
 kernel: [<ffffffff8100c280>] ? child_rip+0x0/0x20  

今天其中一台虚拟机重新启动。当我检查时messeges,我看到了上面的消息,然后看到了一些数据库错误。该网络出现问题,该计算机与主计算机失去连接,然后重新启动。我的问题是:这些内核消息是什么以及我应该在哪里寻找问题?他们和网络有关系吗?它只发生在VM机器上吗?

答案1

该警告是由于资源匮乏造成的。

如果在虚拟机中,这可能是主机超额订阅的线索。

请注意,这是一个警告(因此是 INFO 关键字),可以忽略它。不过,我建议解决导致问题的根本问题,因为随着时间的推移,这些问题必然会恶化。

我会选择 I/O 存储的缺乏或资源/过度使用。

您还可以尝试运行:

sudo sysctl -w vm.dirty_ratio=10
sudo sysctl -w vm.dirty_background_ratio=5

如果这对您有用,请将其永久放置在启动时应用它/etc/sysctl.conf

vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

Linux内核恐慌问题:如何修复hung_task_timeout_secs和阻塞超过120秒的问题

默认情况下,Linux 将最多 40% 的可用内存用于文件系统缓存。达到此标记后,文件系统将所有未完成的数据刷新到磁盘,导致所有后续 IO 同步。默认情况下,要将这些数据刷新到磁盘,时间限制为 120 秒。在这种情况下,IO 子系统的速度不够快,无法在 120 秒内刷新数据。由于 IO 子系统响应缓慢并且服务的请求增多,系统内存被填满,导致上述错误,从而服务 HTTP 请求。

相关内容