docker-index.exe内存占用大
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker-index.exe内存占用大相关的知识,希望对你有一定的参考价值。
你好,最近用docker部署了个系统,服务器配置是1G的内存,跑了两个容器,一个wbe服务,一个是mysql,使用的过程中发现服务经常挂,一开始因为运行的服务不太重要并且没时间处理就没太在意,每次挂了我就上传restart重启一下镜像。后面找了个时间排查了问题,查看了下docker-compose的日志,发现是因为运行的mysql容器占用内存过高导致的,在此记录下解决过程。1.排查原因
docker-compose logs
从第1和第2条的error发现是因为mysql容器占用的内存过高,导致mysql挂了(shutdown)
2.解决
上网搜了一下,针对该问题一般的解决方法一般都是
1)进入到容器里修改mysql的配置文件,限制mysql容器的内容占用大小
2)增大服务器的swap
3)也可以在容器启动的时候增加限制内存的参数--innodb-buffer-pool-size=64M,详细百度
结合查询了其他资料,决定使用第一种解决方案。(增大swap治标不治本,而且增大swap是对系统而言的,swap不建议增大太多,扫描类的服务如果不限制容器的内存很容易爆)
过程中主要参数该文章解决原文
步骤如下:
1.docker ps
2.docker exec -it id bash
3.进入/etc/mysql/conf.d目录后,vim docker.cnf文件
首先需要安装vim
apt-get update apt-get install vim
然后vim docker.cnf,编辑后保存退出
最后exit退出容器后,然后docker-compose restart即可
3.优化前后内存占用对比 参考技术A 测试环境下服务器的配置为24核64G内存,启动微服务,在没有进行内存限制的时候,我们通过docker stats命令查看一下微服务的内存占用,如下图
我们发现8个微服务占用了将近24G的内存,最大的一个服务占用了将近8个G的内存,这显然是不合理的
我们看一下Dockerfile文件的配置
FROM registry.cn-beijing.aliyuncs.com/sxd/ubuntu-java8:1.0
MAINTAINER helloworld <xxxxx@qq.com>
ADD bin/start.sh /root/
RUN chmod u+x /root/start.sh
CMD ["/root/start.sh","dev -Dcache"]
对应的启动脚本start.sh的配置如下:
#!/bin/bash
#### normal dev model
#nohup java -jar -Dspring.profiles.active=dev $1 target/myservice.jar > out.log $1 2>&1 &
nohup java -jar target/myService.jar - 参考技术B 可以进入到容器里修改mysql的配置文件,限制mysql容器的内容占用大小
2)增大服务器的swap
3)也可以在容器启动的时候增加限制内存的参数--innodb-buffer-pool-size=64M。
php 数组占用内存太大
php 数组占用内存太大
public function getLink($title = false)
$mode = "/<a.*?href='(.*?)'.*?>(.*?)<\/a>|<a.*?href=\"(.*?)\".*?>(.*?)<\/a>|<A.*?HREF='(.*?)'.*?>(.*?)<\/A>|<A.*?HREF=\"(.*?)\".*?>(.*?)<\/A>/i";
preg_match_all($mode, $title, $linkArray);
return $linkArray;
上面函数返回了一个很大数组,导致电脑内存耗光,我想问,要怎么解决正则返回数组内存太大,导致电脑内存耗光的问题
以上是关于docker-index.exe内存占用大的主要内容,如果未能解决你的问题,请参考以下文章