插件窝 干货文章 linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

检查 调整 内存 sysctl 54    来源:    2025-04-02

Linux "task blocked for more than 120 seconds" 错误解决方案

这个错误信息表明系统中有一个任务被阻塞超过120秒,通常与I/O、内存或调度问题有关。以下是三种解决方式:

1. 调整hung_task_timeout_secs内核参数

# 临时调整(立即生效,重启后失效)
echo 600 > /proc/sys/kernel/hung_task_timeout_secs

# 永久调整(添加到/etc/sysctl.conf)
echo "kernel.hung_task_timeout_secs = 600" >> /etc/sysctl.conf
sysctl -p

这将把hung task检测时间从默认的120秒延长到600秒,减少误报。

2. 检查并优化I/O性能

# 查看当前I/O等待情况
iostat -x 1 5

# 检查磁盘健康状态
smartctl -a /dev/sdX

# 如果有高I/O等待,可以尝试:
# - 优化文件系统(如ext4添加noatime,nodiratime选项)
# - 升级存储硬件
# - 调整I/O调度器(如deadline或noop)
echo deadline > /sys/block/sdX/queue/scheduler

3. 检查内存和交换空间使用

# 检查内存使用情况
free -h

# 检查OOM killer日志
dmesg | grep -i oom

# 解决方案可能包括:
# - 增加物理内存
# - 调整swap空间大小
# - 优化应用程序内存使用
# - 调整vm.swappiness参数
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p

如果以上方法不能解决问题,可能需要进一步检查: - 特定进程的堆栈跟踪(cat /proc/<PID>/stack) - 内核日志中的其他相关错误(dmesg) - 考虑升级内核版本或应用相关补丁