项目场景:
这里的系统环境为kylin linux advanced server v10 (lance)
问题描述
在docker环境中部署es和mysql,占用突然飙高或明显出现异常
这里可以看见es的服务明显出现异常,内存占用飙高,但是看mysql比较正常(其实不然,只是被es给占用了,因为我先启动的es)
原因分析:
这个问题出现的原因是因为在安装docker时,docker.service这个文件中的LimitNOFILE项使用的是默认配置
然而这个默认项针对可能更多的是centos、red hat等系统,麒麟系统在这里读取的内容可能会是2^30(1073741816)或者是2^6(),但是我在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 ## 查看内存占用情况
确保服务正常启动
高占用情况得到解决