Linux 内核告警 kernel: INFO: task xxx blocked for more than 120 seconds.----已解决
2022/1/11 7:08:02
本文主要是介绍Linux 内核告警 kernel: INFO: task xxx blocked for more than 120 seconds.----已解决,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
系统centos7.5 message夜间告警提示 task kworker/0:1:47475 blocked for more than 120 seconds.
具体如下:
kernel: INFO: task kworker/0:1:47475 blocked for more than 120 seconds. Jan 9 23:26:02 hblf-ct-dsm009 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. Jan 9 23:26:02 hblf-ct-dsm009 kernel: kworker/0:1 D ffff9b57af61acc0 0 47475 2 0x00000080 Jan 9 23:26:02 hblf-ct-dsm009 kernel: Call Trace: Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] ? scsih_qcmd+0x3ab/0x520 [mpt3sas] Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] schedule+0x29/0x70 Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] schedule_timeout+0x221/0x2d0 Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] ? select_task_rq_fair+0x5a6/0x760 Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] ? scsi_request_fn+0x48/0x680 Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] wait_for_completion+0xfd/0x140 Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] ? wake_up_state+0x20/0x20 Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] kthread_create_on_node+0xaa/0x140 Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] ? manage_workers.isra.26+0x2a0/0x2a0 Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] create_worker+0xeb/0x200 Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] manage_workers.isra.26+0xf6/0x2a0 Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] worker_thread+0x383/0x3c0 Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] ? manage_workers.isra.26+0x2a0/0x2a0 Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] kthread+0xd1/0xe0 Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] ? insert_kthread_work+0x40/0x40 Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] ret_from_fork_nospec_begin+0x21/0x21 Jan 9 23:26:02 hblf-ct-dsm009 kernel: [] ? insert_kthread_work+0x40/0x40 Jan 9 23:26:02 hblf-ct-dsm009 kernel: INFO: task kworker/15:1:50115 blocked for more than 120 seconds. Jan 9 23:26:02 hblf-ct-dsm009 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. Jan 9 23:26:02 hblf-ct-dsm009 kernel: kworker/15:1 D ffff9b5baee5acc0 0 50115 2 0x00000080 Jan 9 23:26:02 hblf-ct-dsm009 kernel: Call Trace:
问题原因:
默认情况下, Linux会最多使用40%的可用内存作为文件系统缓存。当超过这个阈值后,文件系统会把将缓存中的内存全部写入磁盘, 导致后续的IO请求都是同步的。
将缓存写入磁盘时,有一个默认120秒的超时时间。 出现上面的问题的原因是IO不能在120秒将缓存中的数据全部写入磁盘。IO系统响应缓慢,导致越来越多的请求堆积,最终系统内存全部被占用,导致系统失去响应。
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs"的意思是关闭这个告警提示。 解决办法: 调整文件系统缓存中脏数据占用内存的比例,调整参数,降低脏数据开始处理的百分比,提高脏数据最高容量。使得文件系统缓存不会那么快写入 硬盘,而系统有时间去处理脏数据。主要是如下两项参数: vm.dirty_background_ratio指定当文件系统缓存脏页数量达到系统内存百分之多少时(如5%)就会触发pdflush/flush/kdmflush等后台回写进程运行,将一定缓存的脏页异步地刷入外存。 vm.dirty_ratio 则指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如10%),系统不得不开始处理缓存脏页(因为此时脏页数量已经比较多,为了避免数据丢失需要将一定脏页刷入外存),在此过程中很多应用进程可能会因为系统转而处理文件IO而阻塞。
sysctl -a | grep dirty #查看目前参数,我将触发值减少一倍,而容限调整到60%
#写入内核
vi /etc/sysctl.conf
vm.dirty_background_ratio = 5 #原来是10
vm.dirty_ratio = 60 #原来是20
sysctl -p #使修改内核参数生效
这篇关于Linux 内核告警 kernel: INFO: task xxx blocked for more than 120 seconds.----已解决的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南