麒麟kylin v10使用docker启动es,mysql等服务,容器内存高占用异常情况
es服务或mysql服务高占用导致其他服务无法正常启动
项目场景:
这里的系统环境为kylin linux advanced server v10 (lance)
问题描述
在docker环境中部署es和mysql,占用突然飙高或明显出现异常

这里可以看见es的服务明显出现异常,内存占用飙高,但是看mysql比较正常(其实不然,只是被es给占用了,因为我先启动的es)
原因分析:
Docker 守护进程通过 docker.service 文件的 LimitNOFILE 参数限制容器的 open files
这个问题出现的原因是因为在安装docker时,docker.service这个文件中的LimitNOFILE项使用的是默认配置

然而这个默认项针对可能更多的是centos、red hat等系统,麒麟系统在这里读取的内容可能会是2^30(1073741816)或者是2^6(64),但是我在centos7的系统中读取的数据是2^20(1048576)
解决方案:
修改docker.service文件
1、首先确定这里docker使用的docker.service是哪一个或在那里(不同系统中的路径不同)
systemctl show -p FragmentPath docker

这里返回的路径为现在docker正在使用的docker.service文件
2、修改docker.service文件
vim /etc/systemd/system/docker.service

这里只对LimitNOFILE项进行修改,将其改为2^20(1048576)
3、重新加载配置内容
systemctl daemon-reload
4、重启服务
systemctl restart docker
这里如果服务器部署的内容较多的话,可以稍微等待一下
5、查看启动情况和占用情况
docker ps ## 查看服务是否正常启动
docker stats ## 查看内存占用情况

确保服务正常启动

高占用情况得到解决
更多推荐
所有评论(0)