解决docker 中mysql占用内存过大问题

解决docker 中mysql占用内存过大问题,第1张

docker stats

首先安装vim :    yum install vim -y

修改mysql配置 : vim /etc/my.cnf

[mysqld]

performance_schema_max_table_instances=400

table_definition_cache=400

table_open_cache=256

docker restart db-manage

前几天在一台小内存上部署mysql,但经常被系统killed,排查问题之后发现是其内存瞬间占用过高,机器爆了内存,于是便有了这篇文章,记录一次调优经验。

使用docker stats查看mysql占用,发现降到了10%以下,效果明显。

在制作镜像的过程中,我们要注意几点:

1.文件系统是UnionFs,Dockerfile中每一条RUN都会生成一个层次(layer)。所以我们需要在每一条RUN之后清理产生的数据。因为生成的结果(3G的大小)是各层次大小的线性叠加。

2.为什么官方的镜像普遍偏小呢?我们就以mysql:5.6来作为参考,来分析一下:

RUN apt-get update &&apt-get install -y perl --no-install-recommends &&rm -rf /var/lib/apt/lists/*在更新组建以后,接着删除了apt的缓存的包文件。通常来说这个文件夹视情况会占用100M左右。

RUN { ...&&apt-get update &&apt-get install -y

mysql-server="${MYSQL_VERSION}" &&rm -rf /var/lib/apt/lists/* &&rm

-rf /var/lib/mysql &&mkdir -p /var/lib/mysql 在安装db以后,照例删除缓存的包文件。删除/var/lib/mysql能清除示例数据库。

而我们观察一下,hub.docker.com中最常用的vim包,我们发现haron/vim镜像是300M用的scratch作为基础镜像。

在hub.docker.com上粗略找了下,没有找到用centos做基础的mysql镜像。个人估计是缓存的包没有删掉,导致的问题。

至于@ShawnTaoo兄弟提到的基础镜像大小问题,我也做了下调查:centos:latest 190+MB, debian:jessie: 130+MB, ubuntu:latest 180+MB


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5907721.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-07
下一篇 2023-03-07

发表评论

登录后才能评论

评论列表(0条)

保存