【发布时间】:2018-07-27 09:56:50
【问题描述】:
下面是 mysqltuner 的报告,最后我写了服务器统计数据和实际问题。
性能指标
[--] Up for: 2d 14h 28m 52s (59M q [266.240 qps], 96K conn, TX: 114G, RX: 16G)
[--] 读取/写入:18% / 82%
[--] 二进制日志被禁用
[--] 物理内存:125.9G
[--] MySQL 最大内存:381.5G
[--] 其他进程内存:308.9M
[--] 总缓冲区:59.2G 全局 + 66.0M 每个线程(5000 个最大线程)
[--] P_S 最大内存使用量:72B
[--] Galera GCache 最大内存使用量:0B
[OK] 达到的最大内存使用量:61.3G(已安装 RAM 的 48.69%)
[!!] 最大可能的内存使用量:381.5G(已安装 RAM 的 302.98%)
[!!] 其他进程的总体可能内存使用量超出内存
[OK] 慢查询:0% (171/59M)
[OK] 可用连接的最高使用率:0% (32/5000)
[OK] 中止连接:0.00% (1/96766)
[!!] 由于互斥量争用,默认情况下可能禁用查询缓存。
[OK]查询缓存效率:88.5%(34M缓存/39M选择)
[OK] 每天查询缓存修剪次数:0
[OK] 需要临时表的排序:0%(264 临时排序 / 276K 排序)
[!!] 不使用索引执行的连接:13649
[OK] 在磁盘上创建的临时表:3%(磁盘上 23K / 总共 641K)
[OK] 线程缓存命中率:99%(创建 32 个 / 96K 连接)
[OK] 表缓存命中率:70%(7K 打开/10K 打开)
[OK] 使用的打开文件限制:0% (124/1M)
[OK] 立即获取表锁:100%(1K 立即/1K 锁) MyISAM 指标
[!!] 使用的密钥缓冲区:18.1%(已使用 27M / 150M 缓存)
[!!] 密钥缓冲区大小/MyISAM 索引总数:144.0M/147.8M
[!!] 读取键缓冲区命中率:86.8%(38 次缓存/5 次读取)
InnoDB 指标
[--] InnoDB 已启用。
[--] InnoDB 线程并发:16
[OK] 每个表的 InnoDB 文件已激活
[OK] InnoDB 缓冲池/数据大小:56.0G/8.5G
[!!] InnoDB 日志文件大小/InnoDB 缓冲池大小(2.67857142857143 %)的比率:768.0M * 2/56.0G 应该等于 25%
[!!] InnoDB 缓冲池实例:32
[--] InnoDB 缓冲池块数:448 个,用于 32 个缓冲池实例
[OK] Innodb_buffer_pool_size 与 Innodb_buffer_pool_chunk_size & Innodb_buffer_pool_instances 对齐
[OK] InnoDB 读取缓冲区效率:100.00%(13238376177 次点击/总共 13238716229)
[OK] InnoDB 写入日志效率:99.46%(175848562 次点击/总共 176798170 次)
[OK] InnoDB 日志等待:0.00%(0 次等待 / 949608 次写入)
General recommendations:
Control warning line(s) into /my/path/to/log/mysql-error.log file
Control error line(s) into /my/path/to/log/mysql-error.log file
Reduce your overall MySQL memory footprint for system stability
Dedicate this server to your database for highest performance.
Adjust your join queries to always utilize indexes
要调整的变量:
MySQL 的最大内存使用量非常高
在增加 MySQL 缓冲区变量之前添加 RAM
query_cache_size (=0)
query_cache_type (=0)
join_buffer_size (> 16.0M,或者总是使用连接索引)
key_buffer_size (> 147.8M)
innodb_log_file_size * 如果可能的话,innodb_log_files_in_group 应该等于缓冲池大小的 1/4 (=28G)。
innodb_buffer_pool_instances(=56)
系统配置
Ubuntu 16.04.5 LTS
Mysql 版本:5.7.22
我正在使用 magento 1.9.3.4 和一个网站、3 家商店和 10 万种产品,大约 1700 个类别。
除了上面的Mysql建议之外,我注意到的另一件事是,当我在浏览器中加载category时,mysql会消耗40-50%的CPU使用率。
如果有人可以帮助配置最合适的mysql配置,基于我的RAM,将非常感激。
另外请记住,由于我们有 100k+ 产品,速度是主要问题,所以 mysql 配置的任何更改都不应消耗速度,如果它有助于提高速度,那将是一个很好的方法继续前进。
谢谢。
【问题讨论】:
-
附加信息请求。在 pastebin.com 上发布并分享链接。 # MySQL 主机服务器的核心 A) 完成(未编辑)my.cnf 或 my.ini 来自 SSH 登录根,文本结果为:B) SHOW GLOBAL STATUS;至少 24 小时正常运行时间后 C) 显示全局变量; D) 显示完整的处理程序;和 可选的非常有用的信息,如果可用,包括 - htop 或 top 或 mytop 用于大多数活动应用程序,ulimit -a 用于 linux/unix 限制列表,iostat -xm 5 3 用于按设备和核心/cpu 计数的 IOPS,用于服务器工作负载调整分析以提供建议。
标签: mysql magento database-administration mysqltuner