首页 > 解决方案 > MySQL InnoDB 磁盘写入在 2.5 小时后突然增加

问题描述

MySQL 版本 = 5.7.31

在 2.5 小时的繁重工作负载(大约每秒 800 次选择)之后,我们开始注意到我们的数据库服务器中的 CPU 利用率很高。DB 表现相当不错,突然间 InnoDB Disk Writes 显着增加,其次是 InnoDB Disk Reads。此时选择计数降至零,使应用程序无用。大约 15 分钟后,数据库开始正常工作。 mysql工作台

配置如下

innodb_flush_method=O_DIRECT
innodb_log_file_size=1G
innodb_numa_interleave

innodb_buffer_pool_size=75G

key_buffer_size = 12G
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8

tmp_table_size = 1024M
max_heap_table_size = 1024M
max_connections = 600
max_connect_errors = 10000

query_cache_limit = 1M
query_cache_size = 50M

htop:https ://ibb.co/gwGSkc1 - (问题前)

iostat:https ://ibb.co/YyJWkb9 -(问题前)

df -h:https ://ibb.co/x25vg52

内存 94G

核心数 32

SSD:/var/lib/mysql 安装在 SSD 卷上(解决方案托管在开放堆栈上)

全球状态:https ://pastebin.com/yC4FUYiE

全局变量: https ://pastebin.com/PfsYTRbm

工艺清单:https ://pastebin.com/TyA5KBDb

标签: mysqldatabaseperformanceinnodb

解决方案


每秒速率 = RPS

为您的 my.cnf [mysqld] 部分考虑的建议

innodb_lru_scan_depth=100  # from 1024 to conserve 90% of CPU cycles used for function
innodb_io_capacity=1500  # from 200 to use more of your available SSD IOPS
read_rnd_buffer_size=128K  # from 256K to reduce handler_read_rnd_next RPS of 474,918
key_buffer_size=16M  # from 12G less than 1% used and your max is 94G available.

有关其他建议,请查看配置文件、联系信息的网络配置文件和可免费下载的实用程序脚本,以帮助进行性能调整。

还有更多改进配置的机会。


推荐阅读