MYSQL在双路CPU的优化实践

MYSQL在双路CPU的优化实践

最近线上业务服务器 出现性能问题
导致 系统负载飙升到 200% ,业务出现卡顿
检查发现CPU利用率和物理内容未使用,但是SWAP已开始使用

经过优化后正常
安装 NUMA 管理工具
dnf install numactl numactl-libs -y

优化内核限制
编辑 /etc/sysctl.conf 添加:

vm.swappiness = 10 # 减少对 Swap 的依赖
vm.max_map_count = 262144
禁用透明大页 (THP)echo never > /sys/kernel/mm/transparent_hugepage/enabled

启动脚本的 NUMA 绑定

为了让 MySQL 均匀利用两颗物理 CPU 的内存带宽,需修改启动脚本。

修改 /etc/init.d/mysqld
找到启动行(通常包含 mysqld_safe),在前面加入 numactl 绑定:# 修改前: $bindir/mysqld_safe --defaults-file=$conf ... # 修改后: /usr/bin/numactl --interleave=all $bindir/mysqld_safe --defaults-file=$conf ...

在检查下是否均衡利用

[root@BizCore ~]# numastat -p 24073

Per-node process memory usage (in MBs) for PID 24073 (mysqld)
                           Node 0          Node 1           Total
                  --------------- --------------- ---------------
Huge                         0.00            0.00            0.00
Heap                        26.89           28.89           55.78
Stack                        0.03            0.02            0.05
Private                   6293.18         6331.12        12624.30
----------------  --------------- --------------- ---------------
Total                     6320.09         6360.03        12680.12

这样就解决了 可以观测到 平均分别配到 Node 1 和 Node 0 2个CPU上了
MYSQL性能大幅度提升 系统负载降低到 5 以内

更新:
因为性能问题,最后切换到衍生版 MariaDB 11.4 / (MYSQL 8.4) LTS 的版本
这个版本确实比MYSQL原生强 尤其是在聚合查询上
现在系统负载直接稳定在2, 不在有线程堵塞的问题了

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注