如何处理Linux实例中的page allocation failure问题?
问题描述
在系统的dmesg日志或者message日志中显示page allocation failure报错,如下图所示。此时系统可能处于网络不通、丢包或者IO异常的异常状态。
可能原因
page allocation failure报错表示分配内存页失败。常见的原因有:
- 实例内存使用率高。
- 实例内存使用率不高(低于80%),但是业务IO(网络、存储)压力大,网络消耗的速度快于系统内存的回收速度。
处理方法
问题原因 |
处理建议 |
---|---|
实例内存使用率高。 |
升级实例内存配置:变更ECS规格。
注意:
更改实例规格的过程中,您需要停止并重新启动ECS实例,建议您在非业务高峰期时执行该操作,减少对您业务造成的影响。 |
实例内存使用率不高(低于80%),但是业务IO(网络、存储)压力大,网络消耗的速度快于系统内存的回收速度。 |
需要针对高IO场景进行内存优化: 建议调优内核参数vm.min_free_kbytes到默认值(一般为67584)的三倍,修改步骤如下:
注意:
vm.min_free_kbytes该参数如果配置过大会导致应用能够使用的内存过小,更容易触发OOM的异常,建议该参数配置的值不要超过内存的3%。 |