写点什么

2020 年 6 月 19 日 服务器性能剖析

发布于: 2020 年 06 月 19 日

最常碰见的三个性能相关的服务的请求是:1、如何确认服务器是否达到了性能最佳的状态。2、找出某条语句为什么执行的不够快。3、诊断被用户描述成“停顿”、“堆积”或者“卡死”的某些间歇性故障



1、性能优化简介

我们将性能优化定义为完成任务所需要的时间度量,换句话说,性能即响应时间。

数据库服务器的目的是执行SQL语句,所以它关注的任务是查询或者语句。

数据库服务器的性能用查询的响应时间来度量,单位是每个查询花费的时间。

优化的第一步就是测量时间花费在了什么地方。

完成一项任务所需要的时间可以分为两部分:执行时间和等待时间。

1、通过性能剖析进行优化

性能剖析是测量和分析时间花费在哪里的主要方法。性能剖析一般有两个步骤:测量任务所花费的时间;然后对结果进行统计和排序,将重要的任务排在前面。

我们重点关注两种类型的性能剖析:基于执行时间的分析和基于等待的分析。

基于执行时间的分析研究的是什么任务的执行时间最长

基于等待的分析则是判断任务在什么地方被阻塞的时间最长

2、理解性能剖析

MySQL的性能剖析将最重要的任务展示在前面,但有时候没有显示出来的信息也很重要。

1、值得优化的查询,性能剖析不会自动给出哪些查询值得花时间去优化。第一,一些只占总响应时间比重很小的查询是不值得优化的。第二,如果优化的成本大于收益,就不值得去优化。

2、异常情况:某些任务即使没有出现在性能剖析的前面也需要优化

2、对应用程序进行性能剖析

剖析应用程序一般比剖析数据库服务器要容易,而且回报更多。

性能瓶颈可能有很多影响因素:

1、外部资源,比如调用了外部的Web服务器或者搜索引擎

2、应用需要处理大量的数据

3、在循环中执行昂贵的操作,比如滥用正则表达式

4、使用低效的算法

3、剖析MySQL查询

1、剖析服务器负载

服务器端的剖析很有价值,因为在服务器端可以有效地审计效率低下的查询。定位和优化“坏”查询能够显著提升应用的性能,也能解决特定的难题。

捕获MySQL的查询到日志文件中,在MySQL5.1及更新的版本中,慢日志的功能已经被加强,可以通过设置long_query_time为0来捕获所有的查询。

在MySQL中慢查询日志是开销最低、精度最高的测量查询工具

慢查询日志是一种轻量而且功能全面的性能剖析工具,是优化服务器查询的利器。

分析查询日志

强力建议从现在开始使用慢查询日志捕获服务器上的所有查询。

而且不要直接打开整个慢查询日志进行分析,这样做只会浪费时间和金钱。首先应该生成一个剖析报告,可以利用pt-query-digest分析MySQL查询日志,该工具功能强大可以将报告保存在数据库中,以及追踪工作负载随时间的变化。

一般情况下,只需要将慢查询日志文件作为参数传递给pt-query-digest,就可以正确地工作了

2、剖析单条查询

主要是介绍如何方便地测量查询执行的各部分花了多少时间,有了这些数据才能决定采用何种优化技术。

在实际应用中,SHOW STATUS ,SHOW PROFILE 、检查慢查询日志的条目是最可靠的三种方法。

SHOW PROFILE: 命令默认是禁用的,但是可以通过服务器变量在会话级别动态地修改。

mysql> SET profiling=1;

SHOW STATUS: 是一个有用的工具,但并不是一款剖析工具。SHOW STATUS 的大部分结果都只是一个计数器,可以显示某些活动如读索引的频繁程度,但无法给出消耗了多少时间。

4、总结

  1. 定义性能最有效的方法是响应时间

  2. 如果无法测量就无法有效的优化,所以性能优化工作基于高质量、全方位及完整的响应时间测量

  3. 测量最佳开始点是应用程序,而不是数据库

  4. 完整的测量会产生大量需要分析的数据,所以需要用到剖析器。这是最佳的工具,可以帮助将重要的问题冒泡到前面

  5. 剖析报告是一种汇总信息,掩盖和丢弃了太多细节

  6. 有两种消耗时间的操作:工作或者等待。大多数剖析器只能测量因为工作而消耗的时间,所以等待分析有时候是很有用的补充

  7. 优化和提升是两回事。当继续提升的成本超过收益的时候,应停止优化



如果你想尝试提升服务器的总体性能,那么一个比较好的起点是将所有查询记录到日志中,然后利用pt-query-digest 工具生成系统级别的剖析报告。

可以把精力放在寻找那些消耗时间最多的、导致了糟糕的用户体验的,或者高度变化的,抑或有奇怪的响应时间直方图的查询。

当找到了这些坏的查询时,要钻取pt-query-digest报告中包含的该查询的详细信息,或者使用SHOW PROFILE 以其他诸如EXPALIN这样的工具。

发布于: 2020 年 06 月 19 日阅读数: 80
用户头像

还未添加个人签名 2020.05.18 加入

还未添加个人简介

评论

发布
暂无评论
2020年6月19日        服务器性能剖析