【Docker】Kylin V10 下 MySQL 容器内存占用异常的解决方法

这篇具有很好参考价值的文章主要介绍了【Docker】Kylin V10 下 MySQL 容器内存占用异常的解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!

kylin v10 docker mysql 内存异常,Docker,docker,mysql,容器,kylin

 公众号原文链接:Kylin V10 下 MySQL 容器内存占用异常的解决方法


背景介绍

笔者在文章《MySQL 源码构建 Docker 镜像(基于 ARM 64 架构)》中曾提到过,为解决 Kylin V10 的兼容性问题,需要在 MySQL 容器启动脚本 docker-entrypoint.sh 的基础上单独添加 391 行。今天就来具体讲一讲背后的问题、原因,以及完整的解决过程。

先说现象和结论,在 Kylin V10 下的 MySQL 容器,启动时内存占用超过 20GB,无业务运行时内存占用约 16GB,均远高于其他系统下的几百MB,经排查发现 MySQL 的 open_files_limit 参数在 Kylin V10 下取值异常,直接导致上述问题。


过程回顾

1、查看内存分配

首先,笔者通过以下命令得到 MySQL 的内存分配情况,试图找出占用内存较多的类型和事件,但是通过查询结果粗略估算,所有已分配内存加起来还不到 1GB,看起来还算正常。

​​​​​​​​​​​​​​# 登录 MySQL 后执行
select event_name,current_alloc from sys.memory_global_by_current_bytes ;

2、调整内存参数

随后,笔者调整思路,尝试找出 MySQL 中与内存相关的参数,进而有针对性地进行优化调整。

通过查阅文献,笔者找到了 MySQL 使用内存的计算方法,涉及的参数如下。

MySQL 使用内存=
key_buffer_size
+  query_cache_size
+  tmp_table_size
+  innodb_buffer_pool_size
+  innodb_additional_mem_pool_size
+  innodb_log_buffer_size
+  max_connections
×( sort_buffer_size
+  read_buffer_size
+  read_rnd_buffer_size
+  join_buffer_size
+  thread_stack
+  binlog_cache_size)

同时,笔者还发现一个可以自动计算 MySQL 使用内存的网站,于是着手将 MySQL 中的参数值与该网站的默认值一一比对,并将不一致的调整为默认值、甚至更低的值。但是最终发现,MySQL 的参数值与默认值偏差并不大,且参数经过调整后,MySQL 的内存占用情况完全没有改善。

附上网站地址:https://www.mysqlcalculator.com

kylin v10 docker mysql 内存异常,Docker,docker,mysql,容器,kylin

3、找到问题根因

此后,笔者还尝试了其他多种方法,但均以失败告终,这里就不一一赘述了。

笔者只能寄希望于把 Kylin V10 下 MySQL 的参数值与其他系统下 MySQL 的参数值进行比较,最终发现只有 open_files_limit 参数存在巨大差距(忘记存图了,印象中两者相差10240倍?),经查 open_files_limit  参数定义了 MySQL 服务进程可以同时打开的文件数量,会预先分配并占用内存!

# 登录 MySQL 后执行以下命令,列出所有参数的名称和值,可以复制到文本,通过 vimdiff 进行比较
show variables ;

​​​​​​​

4、解决取值问题

通过实测发现,直接在 MySQL 中修改 open_files_limit 参数的值并不生效,且 MySQL 容器重启后,open_files_limit 参数会被重置为异常值。

文献显示 open_files_limit 参数的取值与 ulimit 设定的 open files 参数直接相关,笔者猜测是 Kylin V10 存在 MySQL 方面的兼容性问题。

笔者决定修改 MySQL 容器默认的启动脚本 docker-entrypoint.sh,在 MySQL 服务启动前,将 MySQL 容器的 open files 参数强制设定为指定值,并重新构建 MySQL 镜像,最终 Kylin V10 下 MySQL 容器内存占用异常的问题得到解决。

# 在 docker-entrypoint.sh 的 391 行添加
ulimit -n 1048576 && ulimit -a >/dev/null && ulimit -n

kylin v10 docker mysql 内存异常,Docker,docker,mysql,容器,kylin


写在最后

现在回顾起来这个问题貌似并不复杂,但是为了静下心研究,当时从周五晚上 9 点一直搞到周六凌晨 3 点,最终问题得到解决笔者还是小有成就感的。笔者不仅快速解决了工作中遇到的问题,还收获了 MySQL 以及其他方面的知识,而且笔者也更加确信,遇到问题时办法总比困难多。文章来源地址https://www.toymoban.com/news/detail-835817.html

到了这里,关于【Docker】Kylin V10 下 MySQL 容器内存占用异常的解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 麒麟 Kylin V10 一键安装 Oracle 11GR2 单机 ASM(231017)

    Oracle 一键安装脚本,演示麒麟 Kylin V10 一键安装 Oracle 11GR2 单机 ASM(231017)过程(全程无需人工干预):(脚本包括 ORALCE PSU/OJVM 等补丁自动安装 ) ⭐️ 脚本下载地址 :Shell脚本安装Oracle数据库 脚本第三代支持 N 节点一键安装,不限制节点数! 1、安装好操作系统,建议安

    2024年04月26日
    浏览(25)
  • 【Linux】银河麒麟V10 ARM架构_安装JDK8-kylinV10(Kylin Linux Advanced Server V10 )操作系统(CentOS8)

    🦄 个人主页——🎐开着拖拉机回家_大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁🍁🪁🍁🪁 🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁🍁🍁🪁🍁 感谢点赞和关注 ,每天

    2024年02月05日
    浏览(53)
  • 麒麟操作系统Kylin V10 安装达梦数据库DM8 客户端远程调试

    一、环境准备 软件名称 版本 vmware workstation 16.1.2 build-17966106 银河麒麟 Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso 达梦DM8 DMInstall.bin 银河麒麟 server v10 x86架构安装iso镜像。 Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso 二、DM8数据库安装 以下操作可以使用远程工具执行命令 1. 启动网络

    2024年02月04日
    浏览(69)
  • 解决mysql启动占用运行内存过高

    方法1(选取于网络,针对自己的服务器没起作用) 修改my.cnf参数: 重启mysql服务。我这里遇到的没解决,不知道其他人能够解决问题,物理 内存300M以及虚拟内存1G依旧,没改善。 方法2:(解决了当前自己遇到的问题) 要关闭 Performance Schema ,5.6默认开启的,该参数主要用

    2024年02月07日
    浏览(39)
  • docker占用内存过高的解决方案

    环境:系统macOS13,芯片M1Pro,内存16GB 在mac环境中运行docker,则会出现内存占用过高的情况,如下图:   具体原因如下所介绍:   也就是说,docker是无法直接运行在macOS中的,虽然它们都是类unix的。故而我猜测在每次运行一个container容器时,可能都会创建一个虚拟的Linux环境

    2024年02月12日
    浏览(34)
  • 飞腾 kylin-server v10 arm64 aarch64 anaconda3 conda 非法指令 Illegal instruction 笔记

    原因: chenghlee  commented on Jun 15, 2021 It\\\'s likely related to the compiler options used to build the linux-aarch64 packages on defaults; basically, Anaconda uses options that target the server-class Neoverse N1/N2 microarchitecture, rather than the application-class Cortex-A* CPUs. Some thought that needs to be put into the  linux-aarch64  and ho

    2024年02月09日
    浏览(46)
  • 在离线的arm架构kylin v10服务器上使用Kuboard-Spray搭建K8S集群

    在离线的arm架构kylin v10服务器上使用Kuboard-Spray搭建K8S集群 在内网项目中需要安装K8S集群,经过调研,选择使用Kuboard-Spray工具搭建K8S集群,降低学习成本,提高安装效率。 为了简化安装使用集群的过程,搭建了私有yum源仓库和harbor私有镜像仓库。 详细参考文章: 本地yum源仓

    2024年04月10日
    浏览(41)
  • Docker Desktop Vmmem内存占用过高问题解决方案

    内存占用过高原因 主要原因是docker desktop的实现及基于wsl(Windows子系统),相当于在Windows上同时开了一个虚拟机,如果不对wsl的资源进行限制,它将会极大的获取系统资源.所以我们只需要对wsl的最大资源进行限制即可 解决方案 修改wsl配置文件 官方地址 具体配置: 在用户目录创建

    2024年02月05日
    浏览(31)
  • 解决WSL2占用内存过多问题(Docker on WSL2: VmmemWSL)

    安装完WSL2后,又安装了Docker,使用了一段时间,发现电脑变卡,进一步查看,发现CPU和内存占用过大,如下图: docker仅仅运行了mysql和zk,在关掉docker后,占用内存仍然很大: 然后关掉wsl后,发现内存下降了。 但是,这种解决方案并不满足我的诉求,我想要的结果是:dock

    2024年02月08日
    浏览(40)
  • 银河麒麟V10SP1-20200711的mate-indicators进程占用内存过高的解决办法

    目录 一、监控异常 二、进程异常 三、解决方法 (一)第一步:先查看操作系统版本 (二)第二步:下载相应版本的补丁包 (三)第三步:升级补丁、重启系统   1. 升级步骤   2. 生效方式   3. 回退操作         有一台服务器在运维监控系统出发告警:内存使用率达到

    2024年02月07日
    浏览(147)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包