diff --git a/_footer.md b/_footer.md new file mode 100644 index 0000000..5a34fc0 --- /dev/null +++ b/_footer.md @@ -0,0 +1 @@ +[备案](https://beian.miit.gov.cn/#/Integrated/index) Copyright © 2024 Java江湖 \ No newline at end of file diff --git a/_navbar.md b/_navbar.md index 574a118..7346085 100644 --- a/_navbar.md +++ b/_navbar.md @@ -1,6 +1,5 @@ * 友情链接 - * [池建强的墨问主页](#小程序://墨问/WLG1IUwxbxxaJLq) * [MacTalk-池建强的随想录](https://macshuo.com/) * [构建我的被动收入](https://www.bmpi.dev) \ No newline at end of file diff --git a/_sidebar.md b/_sidebar.md index 69aab68..ae61f94 100644 --- a/_sidebar.md +++ b/_sidebar.md @@ -9,6 +9,7 @@ - [第3期-你真的会问问题吗?](md/卖桃者说-极客时间/第3期-你真的会问问题吗.md) - Mysql - [Mysql使用docker-compose启动时my.cnf配置不生效的问题](/md/2024-01-03-docker-compose启动mysql时my.cnf配置不生效的问题.md) + - [Mysql容器启动内存异常占用的问题](/md/2024-05-24-Mysql容器启动内存异常占用的问题.md) - Docker - [Docker部署Nacos服务](/md/2022-11-17-Docker部署Nacos服务.md) - ElasticSearch diff --git a/assets/js/docsify-footer.min.js b/assets/js/docsify-footer.min.js new file mode 100644 index 0000000..8c9c2c4 --- /dev/null +++ b/assets/js/docsify-footer.min.js @@ -0,0 +1,4 @@ +parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c -
- +
加载中...
+ + + diff --git "a/md/2024-05-24-Mysql\345\256\271\345\231\250\345\220\257\345\212\250\345\206\205\345\255\230\345\274\202\345\270\270\345\215\240\347\224\250\347\232\204\351\227\256\351\242\230.md" "b/md/2024-05-24-Mysql\345\256\271\345\231\250\345\220\257\345\212\250\345\206\205\345\255\230\345\274\202\345\270\270\345\215\240\347\224\250\347\232\204\351\227\256\351\242\230.md" new file mode 100644 index 0000000..a3b3848 --- /dev/null +++ "b/md/2024-05-24-Mysql\345\256\271\345\231\250\345\220\257\345\212\250\345\206\205\345\255\230\345\274\202\345\270\270\345\215\240\347\224\250\347\232\204\351\227\256\351\242\230.md" @@ -0,0 +1,95 @@ +# 问题回顾 +使用一下docker-compose.yaml启动了mysql容器。 + +启动成功后,使用free -mh查看宿主机内存占用情况,并用docket stats 查看容器情况,mysql竟然占用了16个G + +## docker-compose.yaml +```yaml +version: '3.9' +services: + mysql: + image: mysql:5.7.29 + restart: on-failure + container_name: mysql + environment: + - TZ=Asia/Shanghai + - MYSQL_ROOT_PASSWORD=123456 + volumes: + - /etc/localtime:/etc/localtime:ro + - ${PWD}/config/my.cnf:/etc/mysql/my.cnf + - ${PWD}/data:/var/lib/mysql + - ${PWD}/logs:/usr/local/mysql/log + ports: + - 3306:3306 +``` +## my.cnf 配置 +``` +[mysqld] +lower_case_table_names=1 +port=3306 +``` + +## docker stats Mysql占用了16G +![Mysql占用了16G](./assets/Snipaste_2024-05-24_10-29-45.png) + +## 问题排查 + +进入到容器内部 +```shell +docker exec -it mysql +``` + +使用top命令,提示命令不存在,那么执行下面命令,安装top命令 +```shell +apt install procps +``` + +执行top,并按m键,发现只有mysqld这个进程占用内存。 +![mysqld这个进程占用内存](./assets/Snipaste_2024-05-24_10-54-52.png) + +这就很奇怪了。 + +在google下发现了这篇文章。 + +[**docker启动mysql时内存占用过多**](https://blog.chenwx.top/p/docker-mysql-event1.html) + + +# 原因分析: +文章指出 +**这个问题的直接原因是文件描述符上限太大了;** + +## 原文截图 +![原文截图](./assets/Snipaste_2024-05-24_14-52-20.png) + + +于是我修改下docker-compose启动脚本 +```yaml +version: '3.9' +services: + mysql: + image: mysql:5.7.29 + restart: on-failure + container_name: mysql + environment: + - TZ=Asia/Shanghai + - MYSQL_ROOT_PASSWORD=123456 + ulimits: + nproc: 65535 + nofile: + soft: 26677 + hard: 46677 + volumes: + - /etc/localtime:/etc/localtime:ro + - ${PWD}/config/my.cnf:/etc/mysql/my.cnf + - ${PWD}/data:/var/lib/mysql + - ${PWD}/logs:/usr/local/mysql/log + ports: + - 3306:3306 +``` +重新run了容器,发现内存下来了。 +```shell +root@betterme:/data/soft/mysql# free -mh + total used free shared buff/cache available +Mem: 27Gi 2.3Gi 19Gi 7.8Mi 5.2Gi 24Gi +Swap: 8.0Gi 0B 8.0Gi +``` \ No newline at end of file diff --git a/md/assets/Snipaste_2024-05-24_10-29-45.png b/md/assets/Snipaste_2024-05-24_10-29-45.png new file mode 100644 index 0000000..6e15b2d Binary files /dev/null and b/md/assets/Snipaste_2024-05-24_10-29-45.png differ diff --git a/md/assets/Snipaste_2024-05-24_10-54-52.png b/md/assets/Snipaste_2024-05-24_10-54-52.png new file mode 100644 index 0000000..fa1e465 Binary files /dev/null and b/md/assets/Snipaste_2024-05-24_10-54-52.png differ diff --git a/md/assets/Snipaste_2024-05-24_14-52-20.png b/md/assets/Snipaste_2024-05-24_14-52-20.png new file mode 100644 index 0000000..8743ad9 Binary files /dev/null and b/md/assets/Snipaste_2024-05-24_14-52-20.png differ