情景
最近gitlab服务会偶发性500,当前机器部署了gitlab、nfs等服务,经过排查发现是nfsd引发oom,导致系统运行不畅。处理过程如下:
事故现场
开发在使用gitlab的时候发现,偶发性的出现500:
排查
-
检查gitlab日志,没有发现明显的异常;
-
检查监控:
根据监控可以发现,有几个时间点内存有较大变化。 -
根据以上时间节点查看系统日志,发现:
当前时间点nfs引发系统oom。
查找解决办法
- 类似问题:https://www.cyberciti.biz/tips/linux-oom-killer-out-of-memory-and-nfs-server-optimization.html
- 追根溯源:https://blog.youkuaiyun.com/fengda2870/article/details/12038419
通过上面两篇文章搞清楚了原因,修复如下:
# 增加如下配置:
$ vim /etc/sysctl.conf
# 预留系统保护内存为500M(该值根据自己具体使用环境设定)
vm.lower_zone_protection = 500
# 生效最新配置
$ sysctl -p
补充
- 关于lower_zone_protection和lowmem_reserve_ratio: http://blog.chinaunix.net/uid-286861-id-3503761.html
- lowmem_reserve_ratio详解:https://blog.youkuaiyun.com/joyeu/article/details/20063429 预留内存值是ratio的倒数关系,如果是256则代表 1/256,即为 0.39% 的高端zone内存大小。