• 欢迎访问南思工作室官方站点.
  • 文章内容如有失效请文章下留言,我们看到后会第一时间处理。
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏南思工作室吧。
  • 图片服务器和主服务器都挂了CDN,如有异常,请留言,我们会尽快处理。

【运维干货】通过Linux宝塔面板实现MySQL性能简单调优

linux nansi 来源:良哥 2个月前 (04-26) 99次浏览 0个评论

在 PHP+MYSQL 架构网站运行过程中,往往会遇到各种性能问题影响,如 MySQL、PHP、CPU、磁盘 IO、缓存等,其中 MySQL 瓶颈就是最常见也最难解决的一种影响网站性能的因素;通常,我们会使用 redis、memcached 等缓存软件来缓存内容,这确实是最优的解决方案之一,但这需要网站程序的支持,然而多数常用网站程序并不支持或者不能完美支持这些缓存软件,今天我们就来谈谈如何通过 MySQL 自身的配置调整来优化 MySQL 性能,以缓解 MySQL 瓶颈问题。

准备:
1、宝塔 Linux 面板 正式版 5.2.0+ (2017/09/20 发布)  测试版 5.2.4+
2、MySQL 5.x

通常 MySQL 调优我们分以下几部分:
1、MySQL 配置参数调优 (需要根据网站运行情况调整)
2、数据表索引调优 (效果明显,但通常优秀的开源程序都不需要调整)
3、SQL 语句调优 (这是程序员或 DBA 干的事)

今天我们主要谈谈如果配合宝塔面板的新功能来进行 MySQL 配置参数调优,我们先来看两张图片:

(图 1)
【运维干货】通过 Linux 宝塔面板实现 MySQL 性能简单调优

(图 2)
【运维干货】通过 Linux 宝塔面板实现 MySQL 性能简单调优

很明显,(图 1)显示的是 MySQL 当前的运行状态,(图 2)显示的是 MySQL 主要配置参数

下面我们就来解读一下这两张图:

1、活动/峰值连接数
(图 1)中当前活动的连接为 1 个,自 MySQL 服务启动以来,最高连接数为 54;当最高连接数接近或等于(图 2)中的 max_connections 时,应适当增加 max_connections,需要注意的是,不要一下子增加过多,建议每次增加 50,观察一段时间,不够再继续增加。

2、线程缓存命中率
(图 1)中线程缓存命中率为 99.78%,若这个值小于 90%,建议适当增加(图 2)中的 thread_cache_size,建议每次增加 8。

3、索引命中率
(图 1)中索引命中率为 99.50%,若这个值小于 95%,建议适当增加(图 2)中的 key_buffer_size,建议每次增加 64,需要说明的是,若您的数据库使用的是 Innodb 引擎,可忽略这个选项

4、Innodb 索引命中率
(图 1)中 Innodb 索引命中率为 100%,若这个值小于 95%,建议适当增加(图 2)中的 innodb_buffer_pool_size,建议每次增加 64,需要说明的是,若您的数据库没有使用 Innodb 引擎,可忽略这个选项

5、查询缓存命中率
MySQL 查询缓存是个比较受争议的功能,个人建议当你有在使用 redis、memcached 等缓存软件时,在(图 2)中将 query_cache_size 设为 0 可以将其关闭,当你没有使用缓存软件,有多余的内存使用,且数据库瓶颈明显存在时,可以尝试开启查询缓存,这是个非常依赖数据表结构及 SQL 语句优化的功能,若数据表结构和 SQL 语句都针对查询缓存进行过优化,它的效果还是很不错的。

6、创建临时表到磁盘
(图 1)中创建临时表到磁盘的比例是 0.42%,这说明大部分临时表创建到内存了,不会过多增加磁盘 IO 的开销,建议,当比例大于 2%时适当增加(图 1)中的 tmp_cache_size,建议每次增加 32,当比例大于 60%时,放弃吧,有些开源程序并没有专门优化过 SQL 语句,所以在运行过程中会开启大量临时表,加多少缓存都是不够用的。

7、已打开的表
当(图 1)中的已打开的表接近或等于(图 2)中的 table_open_cache 时,可以适当增加 table_open_cache,但若设置过大可能导致您的程序频繁中断 MySQL 连接,建议在 1024 以内,最大不要超过 2048。

8、没有使用索引的量、没有使用索引的 JOIN 量
若不为 0,就检查下数据表索引吧,其实只要没有疯涨,比如一天增涨几千,一般可以忽略,必竟优化索引还是程序员或 DBA 去干比较合适。

9、排序后的合并次数
如果这个值在缓慢增张,建议适当增加(图 2)中的 sort_buffer_size,建议每次增加 512,但最大不要超过 8192,如果这个值一直在疯涨,增加 sort_buffer_size 也没用,就放弃这个选项吧,这个锅还是给程序开发者背。

10、锁表次数
如果服务器 CPU 开销不大的情况下,疯狂锁表,建议你将所有数据表转换成 innodb,记得转换前备份哦。

11、优化方案
这个是我们根据内存大小给的一个推荐优化方案,仅是建议仅用于基础参考值,还是要根据实据情况来调整每一个配置项。

注意:保存参数配置后不会立即生效,记得要重启 MySQL 服务。

写在最后:
因我本人并不是专业 DBA,难免有错误或遗漏的地方,还请大家给予指正,另外,可能面板提供的参考数据及调整选项还不够丰富,我们在往后的更新中会根据需要考虑继续增加更多的调整选项,谢谢大家的支持。


南思工作室 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:【运维干货】通过 Linux 宝塔面板实现 MySQL 性能简单调优
免责声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!
喜欢 (5)
关于作者:
南思工作室管理员
发表我的评论
取消评论
表情 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址