关于I/O阻塞导致内核hang_task分析

关于I/O阻塞导致内核hang_task分析

  • 问题表象

ssh远程登陆系统失败,本地登陆后,输入系统指令,响应慢。

 

 

 

 

  • 问题分析

经分析可以肯定的是i/o繁忙导致的

  1.  查看io繁忙的进程

 

 

  1.  经诊断为Oracel rman备份进程

 

  • 问题处理过程

3.1  禁用120s超时消息

echo 0 > /proc/sys/kernel/hung_task_timeout_secs"

3.2. 调小缓存

sysctl -w vm.dirty_background_ratio=5

sysctl -w vm.dirty_ratio=10

 

  • 问题总结

关于内核hang住,导致ssh登录失败,系统响应缓慢。是由io阻塞应用程序导致的。

默认情况下, Linux会最多使用40%的可用内存作为文件系统缓存。当超过这个阈值后,文件系统会把将缓存中的数据全部写入磁盘,导致后续的IO请求都是同步的。将缓存写入磁盘时,有一个默认120秒的超时时间。

出现上面的问题的原因是IO子系统的处理速度不够快,不能在120秒将缓存中的数据全部写入磁盘。IO系统响应缓慢,导致越来越多的请求堆积,导致系统失去响应。

 

 

参数说明

vm.dirty_background_ratio:

当文件缓存中脏数据到到vm.dirty_background_ratio设定的阀值,启动pdflush/flush/kdmflush进程将脏数据写入磁盘,

 

vm.dirty_ratio:

当文件缓存中脏数据到到vm.dirty_background_ratio设定的阀值后,所有新的I/O块都会被阻塞,直到脏页被写入磁盘。

 

观察当前系统等待写盘的脏页数数量:74页

cat /proc/vmstat |egrep "dirty|writeback"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/u012482502/article/details/81809397