服务器性能剖析
性能优化简介
数据库服务器的性能用查询的响应时间来度量,单位是每个查询花费的时间。
完成一项任务所需要的时间可以分成两部分:执行时间和等待时间。如果要优化任务的执行时间,最好的办法是通过测量定位不同的子任务花费的时间,然后优化去掉一些子任务、降低子任务的执行频率或者提升子任务的效率。
通过性能剖析进行优化
性能剖析是测量和分析时间花费在哪里的主要方法。性能剖析一般有两个步骤:测量任务所花费的时间;然后对结果进行统计和排序,将重要的任务排到前面。
对应用程序进行性能剖析
NewRelic会插入到应用程序中进行性能剖析,将收集到的数据发送到一个基于Web的仪表盘,使用仪表盘可以更容易利用面向响应时间的方法分析应用性能。这样用户只需要考虑做那些正确的事情,而不用考虑如何去做。
剖析MySQL查询
剖析服务器负载
慢查询日志
在MySQL的当前版本中,慢查询日志是开销最低、精度最高的测量查询时间的工具。需要担心的是日志可能消耗大量的磁盘空间。如果长期开启慢查询日志,注意要部署日志轮转(log rotation)工具。或者不要长期启用慢查询日志,只在需要收集负载样本的期间开启即可。从慢查询日志中生成剖析报告需要有一款好工具,建议使用pt-query-digest 。
剖析单条查询
诊断间歇性问题
如何判断单条查询问题还是服务器问题
使用SHOW GLOBAL STATUS,使用SHOW PROCESSLIST,使用查询日志(推荐使用前两种,开销较小)
其他剖析工具
使用USER_STATISTICS表
可以查找使用得最多或者使用得最少的表和索引,通过读取次数或者更新次数,或者两者一起排序。
可以查找出从未使用的索引,可以考虑删除之。
可以看看复制用户的CONNECTED_TIME 和BUSY_TIME ,以确认复制是否会很难跟上主库的进度。
使用strace
strace 工具可以调查系统调用的情况。有好几种可以使用的方法,其中一种是计算系统调用的时间并打印出来: