👉点击这里申请火山引擎VIP帐号,立即体验火山引擎产品>>>
问题原因
由于veLinux 1.0 CentOS兼容版镜像内核版本为5.x,比社区版CentOS镜像内核版本高,而高版本内核有更积极的内存回收策略。
更积极的内存回收策略对于需要高性能、高可用和高吞吐量的业务场景(例如:高并发场景的Web服务器、大数据处理、虚拟化环境),可以更有效的利用内存、减少内存碎片化及避免OOM事件。但在内存使用接近极限的情况下,高版本内核会花费更多时间进行内存回收,同时,系统服务的二进制文件会频繁地被换入(swap in)、换出(swap out),导致系统I/O负载升高。进而导致系统性能下降,甚至失去响应。
解决方案
如上原因可知,您可以通过设置服务(Service)的内存上限来避免内存使用接近极限的情况,或选用低内核版本的CentOS镜像来规避这个问题。
参考方案如下:
设置进程的内存限制
登录目标实例。
执行如下命令,设置目标服务的内存限制。
说明
请将xx.service修改为目标服务。
请将100M修改为您期望的内存限制值,单位为MB。
systemctl set-property xxx.service MemoryLimit=100M
执行如下命令,确认目标服务内存限制是否成功修改。
说明
请将xxx.service修改为目标服务。
systemctl status xxx.service
改用内核版本为3.x的CentOS镜像,操作详情可查看更换操作系统。