培训中提到:
在/var/log/message中出现大量的"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message" 和 "blocked for more than 120 seconds" 错误.
解决方案:根据应用程序情况,对vm.dirty_ratio、vm.dirty_backgroud_ratio参数调优,
推荐如下:
请问:
通过上述方式是否解决了上述报错呢?
通过参数调优可以优化系统的虚拟内存分配和回收,但从报错看,可能是资源不足导致,特别在国产化芯片方面该问题尤为严重,所以想了解下,该方式是否解决了问题,是否还有别的调优措施。
默认情况下,Linux会使用最多40%的可用内存作为文件系统缓存。当超过这个阈值后,文件系统会把缓存中的内存全部写入磁盘,导致后续的IO请求都是同步的。将缓存写入磁盘时,有一个默认120s的超时时间,前述问题原因是IO子系统的处理速度不够快,不能在120s将缓存中的数据全部写入磁盘。IO系统响应慢,导致越来越多的请求堆积,最终系统内存全部被占用,导致系统hung死。
解决方案:
根据应用程序情况,对vm.dirty_ratio、vm.dirty_backgroud_ratio参数调优,推荐如下:
sysctl -w vm.dirty_ratio = 10
sysctl -w vm.dirty_backgroud_ratio = 5
sysctl -p
目前没有再复现同样的问题
收起通过参数调优可以优化系统的虚拟内存分配和回收,但是该方式可能并不能完全解决上述报错。因为该报错可能是由于系统资源不足导致的,而资源不足的原因可能是多方面的,比如硬件配置不足、应用程序负载过大等。因此,除了进行参数调优之外,还可以考虑以下措施:
总之,针对该报错,需要综合考虑多方面的因素,进行综合性的优化和调整,才能够更好地解决问题。