centos7 系统cache的一例故障及解决
故障现象
公司某云上一台重度计算型服务出现错误报警,且ssh无法登录,强制重启后检查系统日志,发现系统无法登陆至强制重启期间,下列日志多次重复。
想要了解更多关于互联网知识,windows,linux的知识可以去《linux就该这么学》看看。
操作方法
- 01
Apr 21 13:03:41 web03 kernel: INFO: task kworker/5:0H:11070 blocked for more than 120 seconds . Apr 21 13:03:41 web03 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables thi s message. Apr 21 13:03:41 web03 kernel: kworker/5:0H D ffff8802bebf3dd8 0 11070 2 0x0000008 0 Apr 21 13:03:41 web03 kernel: ffff8802bebf3bf0 0000000000000046 ffff8807fc690fb0 ffff8802bebf 3fd8 Apr 21 13:03:41 web03 kernel: ffff8802bebf3fd8 ffff8802bebf3fd8 ffff8807fc690fb0 ffff8802bebf 3d58 Apr 21 13:03:41 web03 kernel: ffff8802bebf3d60 7fffffffffffffff ffff8807fc690fb0 ffff8802bebf 3dd8 Apr 21 13:03:41 web03 kernel: Call Trace: Apr 21 13:03:41 web03 kernel: [<ffffffff8168c169>] schedule+0x29/0x70 Apr 21 13:03:41 web03 kernel: [<ffffffff81689bc9>] schedule_timeout+0x239/0x2c0 Apr 21 13:03:41 web03 kernel: [<ffffffff810c5308>] ? try_to_wake_up+0x1c8/0x320 Apr 21 13:03:41 web03 kernel: [<ffffffff8168c546>] wait_for_completion+0x116/0x170 Apr 21 13:03:41 web03 kernel: [<ffffffff810c54c0>] ? wake_up_state+0x20/0x20 Apr 21 13:03:41 web03 kernel: [<ffffffff810b08e8>] kthread_create_on_node+0xa8/0x140 Apr 21 13:03:41 web03 kernel: [<ffffffff810a9170>] ? rescuer_thread+0x460/0x460 Apr 21 13:03:41 web03 kernel: [<ffffffff810a883a>] create_worker+0xea/0x250 Apr 21 13:03:41 web03 kernel: [<ffffffff810a8b36>] manage_workers.isra.24+0xf6/0x2d0 Apr 21 13:03:41 web03 kernel: [<ffffffff810a9542>] worker_thread+0x3d2/0x410 Apr 21 13:03:41 web03 kernel: [<ffffffff810a9170>] ? rescuer_thread+0x460/0x460 Apr 21 13:03:41 web03 kernel: [<ffffffff810b0a4f>] kthread+0xcf/0xe0 Apr 21 13:03:41 web03 kernel: [<ffffffff810b0980>] ? kthread_create_on_node+0x140/0x140 Apr 21 13:03:41 web03 kernel: [<ffffffff816970d8>] ret_from_fork+0x58/0x90 Apr 21 13:03:41 web03 kernel: [<ffffffff810b0980>] ? kthread_create_on_node+0x140/0x140 Apr 21 13:05:41 web03 kernel: INFO: task kworker/5:0H:11070 blocked for more than 120 seconds .
- 02
解决参考 经过学习了解到,linux会利用最多40%的可用内存作为文件系统的缓存,到了写入磁盘的时候,如果io速度慢或者压力过大的话,超过120秒未写入完成,那么系统内存就会充满数据并就出现这个错误。 有两个参数可以降低缓存的默认比例, vm.dirtybackgroundratio 和 vm.dirty_ratio ,使其写入磁盘的时间少于120秒,如下示例:
- 03
/etc/sysctl.conf 示例 ## 系统cache在后台和前端可以使用的内存百分比,分别为5%和10%,默认是40%,系统比较繁忙时使用 ## 尝试解决"task kworker/5:0H:11070 blocked for more than 120 seconds ## kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables thi ## s message." vm.dirty_background_ratio = 5 vm.dirty_ratio = 10
- 04
使配置文件生效 sysctl -p
- 05
后续观察是否还会出现同样错误