服务器负载很高,但是CPU利用率不高。服务器经常夯住,网站打不开,SSH连接非常不稳定,输入命令夯住。 服务器报错: INFO: task blocked for more than 120 seconds
================================日志================================
Aug 16 22:48:20 lvs02 kernel: INFO: task sshpass:23238 blocked for more than 120 seconds. Aug 16 22:48:20 lvs02 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. Aug 16 22:48:20 lvs02 kernel: sshpass D 0000000000000003 0 23238 23237 0x00000080 Aug 16 22:48:20 lvs02 kernel: ffff880041233a78 0000000000000046 0000000000000000 ffff88004122a040 Aug 16 22:48:20 lvs02 kernel: ffff8800412339f8 ffffffff8126a4c1 ffff88003f4d6cc0 ffff88003f4d6f88 Aug 16 22:48:20 lvs02 kernel: ffff88004122a5f8 ffff880041233fd8 000000000000f4e8 ffff88004122a5f8 Aug 16 22:48:20 lvs02 kernel: Call Trace:
================================日志================================ 问题原因: 默认情况下, Linux会最多使用40%的可用内存作为文件系统缓存。当超过这个阈值后,文件系统会把将缓存中的内存全部写入磁盘, 导致后续的IO请求都是同步的。 将缓存写入磁盘时,有一个默认120秒的超时时间。 出现上面的问题的原因是IO子系统的处理速度不够快,不能在120秒将缓存中的数据全部写入磁盘。 IO系统响应缓慢,导致越来越多的请求堆积,最终系统内存全部被占用,导致系统失去响应。
优化内核参数: echo "vm.dirty_background_ratio = 5" >> /etc/sysctl.conf echo "vm.dirty_ratio = 10" >> /etc/sysctl.conf 重载sysctl文件 sysctl -p
|