mysql - MySQL InnoDB 磁盘写入在 2.5 小时后突然增加
问题描述
MySQL 版本 = 5.7.31
在 2.5 小时的繁重工作负载(大约每秒 800 次选择)之后,我们开始注意到我们的数据库服务器中的 CPU 利用率很高。DB 表现相当不错,突然间 InnoDB Disk Writes 显着增加,其次是 InnoDB Disk Reads。此时选择计数降至零,使应用程序无用。大约 15 分钟后,数据库开始正常工作。
配置如下
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
解决方案
每秒速率 = 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.
有关其他建议,请查看配置文件、联系信息的网络配置文件和可免费下载的实用程序脚本,以帮助进行性能调整。
还有更多改进配置的机会。
推荐阅读
- python - Python3 Print 不会覆盖某些终端中的当前行
- javascript - 在执行异步承诺时,是否有更好的方法来等待用户操作?
- flutter - 颤振图标比例
- python - 名称“WorksheetNotFound”未定义
- mysql - Sequelize 无法使用 sync() 创建表
- java - 使用 gmaven 插件在 maven 中设置属性
- python - 安装正确版本的 Python 时出现问题
- git - VPN 下的 GIT 仅适用于热点,不适用于家庭路由器/wifi
- c++ - 带前导 1 的位移
- reactjs - React 钩子不使用异步等待设置对象状态。始终未定义