咨询服务热线

13657627879

当前位置主页 > 服务器类型 > 圣何塞服务器 >

圣何塞服务器性能剖析

  • 发布时间:2020-11-12 00:28:00

  • 网站编辑:http://idchw.com.cn

  • 人气:

返回列表

  MySQL圣何塞服务器的性能剖析(profile) 将最重要的任务展示在前面,但有时候没显示出来的信息也很重要。可以参考一下前面提到过的性能剖析的例子。不幸的是,尽管性能剖析输出了排名、总计和平均值,但还是有很多需要的信息是缺失的,如下所示。

  圣何塞服务器

  值得优化的查询(worthwhile query)

  性能剖析不会自动给出哪些查询值得花时间去优化。这把我们带回到优化的本意,如果你读过Cary Millsap的书,对此就会有更多的理解。这里我们要再次强调两点:第一,一些只占总响应时间比重很小的查询是不值得优化的。根据阿姆达尔定律(Amdahl's Law),对一个占总响应时间不超过5%的查询进行优化,无论如何努力,收益也不会超过5%。第二,如果花费了1 000 美元去优化一个任务,但业务的收入没有任何增加,那么可以说反而导致业务被逆优化了1 000美元。如果优化的成本大于收益,就应当停止优化。

  异常情况

  某些任务即使没有出现在性能剖析输出的前面也需要优化。比如某些任务执行次数很少,但每次执行都非常慢,严重影响用户体验。因为其执行频率低,所以总的响应时间占比并不突出。

  未知的未知

  一款好的性能创析工具会显示可能的 “丢失的时间”。丢失的时间指的是任务的总时间和实际测量到的时间之间的差。例如,如果处理器的CPU时间是10秒,而剖析到的任务总时间是9.7秒,那么就有300毫秒的丢失时间。这可能是有些任务没有测量到、也可能是由于测量的误差和精度问题的缘故。如果工具发现了这类问题,则要引起重视,因为有可能错过了某些重要的事情。即使性能剖析没有发现丢失时间,也需要注意考虑这类问题存在的可能性,这样才不会错过重要的信息。我们的例子中没有显示丢夫的时间,这是我们所使用工具的一个局限性。

  被掩藏的细节

  性能剖析无法显示所有响应时间的分布。只相信平均值是非常危险的,它会隐藏很多信息,而且无法表达全部情况。Peter 经常举例说医院所有病人的平均体温没有任何价值注。假如在前面的性能剖析的例子的第一项中 ,如果有两次查询的响应时间是1秒、而另外12 771次查询的响应时间是几十微秒,结果会怎样?只从平均值里是无法发现两次1秒的查询的。要做出最好的决策,需要为性能剖析里输出的这一行中包含的12 773次查询提供更多的信息,尤其是更多响应时间的信息,比如直方图、百分比、标准差、偏差指数等。

  好的工具可以自动地获得这些信息。实际上,pt-query-digest 就在剖析的结果里包含了很多这类细节信息,并且输出在剖析报告中。对此我们做了简化,可以将精力集中在重要而基础的例子上:通过排序将最昂贵的任务排在前面。本章后面会展示更多丰富而有用的性能剖析的例子。

  在前面的性能剖析的例子中,还有一一个重要的缺失,就是无法在更高层次的堆栈中进行交互式的分析。当我们仅仅着眼于服务器中的单个查询时,无法将相关查询联系起来,也无法理解这些查询是否是同一个用户交互的一部分。性能剖析只能管中窥豹,而无法将剖析从任务扩展至事务或者页面查看(page view)的级别。也有一些办法可以解决心个问题,比如给查询加上特殊的注释作为标签,可以标明其来源并据此做聚合,也可以在应用层面增加更多的测量点。

  对任何需要消耗时间的任务都可以做性能剖析,当然也包括应用程序。实际上,剖析用程序一般比剖析数据库圣何塞服务器容易, 而且回报更多。虽然前面的演示例子都是针对MySQL圣何塞服务器的剖析,但对系统进行性能剖析还是建议自上而下地进行,这样可以追踪自用户发

  发起到服务器响应的整个流程。虽然性能问题大多数情况下都和数据库有关,但应用导致的性能问题也不少。性能瓶颈可能有很多影响因素:

  圣何塞服务器

  (1)外部资源,比如调用了外部的Web服务成者搜索引擎。

  (2)应用需要处理大量的数据,比如分析一个超大的XML文件。

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

  (4)使用了低效的算法,比如使用暴力搜索算法(naive searce lgrimn)来查找列表中的项。

  幸运的是,确定MySOL的问题没有这么复杂,只需要-款应用程序的剖析工具即可(作为回报,一旦拥有这样的工具,就可以从一开始就写出高效的代码)。

  建议在所有的新项目中都考虑包含性能剖析的代码。往已有的项目中加人性能剖析代码也许很困难,新项目就简单一些。

  在我们的技术咨询生涯中,最常碰到的三个性能相关的服务请求是:如何确认圣何塞服务器是否达到了性能最佳的状态、找出某条语句为什么执行不够快,以及诊断被用户描述成“停顿”、“堆积”或者“卡死”的某些间歇性疑难故障。本章将主要针对这三个问题做出解答。我们将提供一些工具和技巧来优化整机的性能、优化单条语句的执行速度,以及诊断或者解决那些很难观察到的问题(这些问题用户往往很难知道其根源,有时候甚至都很难察觉到它的存在)。

  圣何塞服务器

  这看起来是个艰巨的任务,但是事实证明,有一个简单的方法能够从噪声中发现苗头。这个方法就是专注于测量圣何塞服务器的时间花费在哪里,使用的技术则是性能剖析(profiling).在本章,我们将展示如何测量系统并生成剖析报告,以及如何分析系统的整个堆栈(stack), 包括从应用程序到数据库圣何塞服务器到单个查询。

  首先我们要保持空杯精神,抛弃掉- 些关于性能的常见的误解。这有一定的难度,下面我们一起通过一些例子来说明问题在哪里。

  性能优化简介

  问10个人关于性能的问题,可能会得到10个不同的回答,比如“每秒查询次数”、"CPU利用率”、“可扩展性”之类。这其实也没有问题,每个人在不同场景下对性能有不同的理解,但本章将给性能一个正式的定义。我们将性能定义为完成某件任务所需要的时间度量,换句话说,性能即响应时间,这是一个非常重要的原则。我们通过任务和时间而不是资源来测量性能。数据库圣何塞服务器的目的是执行SQL语句,所以它关注的任务是查询或者语句,如SELECT, UPDATE, DELETE 等作。数据库圣何塞服务器的性能用查询的响应时间来度量,单位是每个查询花费的时间。

  还有另外一个问题:什么是优化?我们暂时不讨论这个问题,而是假设性能优化就是在一定的工作负载下尽可能地降低响应。很多人对此很迷茫。假如你认为性能优化是降低CPU利用率,那么可以减少对资源的使用。但这是一个陷阱,资源是用来消耗并用来工作的,所以有时候消耗更多的资源能够加快查询速度。很多时候将使用老版本InoDB引擎的MysSQL升级到新版本后,CPU利用率会上升得很厉害,这并不代表性能出现了问题,反而说明新版本的InnoDB对资源的利用率上升了。查询的响应时间则更能体现升级后的性能是不是变得更好。版本升级有时候会带来一此bug.比如不能利用某些索引从而导致CPU利用率上升。CPU利用率只是一种现象, 而不是很好的可度量的目标。

  同样,如果把性能优化仅仅看成是提升每秒查询量,这其实只是吞吐量优化。吞吐量的提升可以看作性能优化的副产品。对查询的优化可以让圣何塞服务器每秒执行更多的查询,因为每条查询执行的时间更短了(吞吐量的定义是单位时间内的查询数量,这正好是我们对性能的定义的倒数)。

  所以如果目标是降低响应时间,那么就需要理解为什么圣何塞服务器执行查询需要这么多时间,然后去减少或者消除那些对获得查询结果来说不必要的工作。也就是说,先要搞清楚时间花在哪里。这就引申出优化的第二个原则:无法测量就无法有效地优化。所以第一步应该测量时间花在什么地方。

  我们观察到,很多人在优化时,都将精力放在修改些东东西上,却很少去进行精确的测量。我们的做法完全相反,将花费非常多,甚至90%的时间来测量响应时间花在哪里。如果通过测量没有找到答案,那要么是测量的方式错了,要么是测量得不够完整。如果测量了系统中完整而且正确的数据,性能问题一般都能暴露出来,对症下药的解决方案也就比较明了。测量是项很有挑战性的工作, 并且分析结果也同样有挑战性,测出时间花在哪里,和知道为什么花在那里,是两码事。

  前面提到需要合适的测量范围,这是什么意思呢?合适的测量范围是说只测量需要优化的活动。有两种比较常见的情况会导致不合适的测量:

  (1)在错误的时间启动和停止测量。

  (2)测量的是聚合后的信息,而不是目标活动本身。

  例如,一个常见的错误是先查看慢查询,然后又去排查整个圣何塞服务器的情况来判断问题在哪里。如果确认有慢查询,那么就应该测量慢查询,而不是测量整个圣何塞服务器。测量的应该是从慢查询的开始到结束的时间,而不是查询之前或查询之后的时间。

  完成一项任务所需要的时间可以分成两部分:执行时间和等待时间。如果要优化任务的执行时间,最好的办法是通过测量定位不同的子任务花费的时间,然后优化去掉一些子任务、降低子任务的执行频率或者提升子任务的效率。而优化任务的等待时间则相对要复杂一些,因为等待有可能是由其他系统间接影响导致,任务之间也可能由于争用磁盘或者CPU资源而相互影响。根据时间是花在执行还是等待上的不同,诊断也需要不同的工具和技术。

推荐资讯/ RECOMMENDED NEWS+MORE

联系地址:重庆市

服务热线:

QQ:714903265

邮箱:714903265@qq.com

技术支持:众云诚

扫一扫加微信

服务热线

13657627879

工作日 9:00-22:00 立即咨询

Copyright © 2002-2020 汇网服务器 版权所有 渝ICP备20008529号-1

X汇网服务器

截屏,微信识别二维码

微信号:13657627879

(点击复制,添加好友)

微信号已复制,请打开微信添加咨询详情!
回到顶部图片