第3章 服务器性能剖析
- 优化的第一步应该是测量时间花在哪里。
- 对测试结果统计之后,对结果进行排序,把重要的任务排在前面。
- 如果优化的成本大于收益,就应该停止优化。
- 平均值在很多时候都隐藏了我们正在需要关注的地方。
- 虽然监控程序本身可能会拖慢程序,但是它对优化程序的贡献,是远远大于的其拖累的。
- mysql慢查询日志可以帮助我们找到那些查询慢的语句。
- 利用pt-query-digest分析慢查询报告。
- 使用SHOW PROFILE 可以详细查看每条语句耗费时间的地方。
- 导致性能低下的原因有几种:资源被过度使用,余量已经不足以正常工作。资源没有被正确配置。资源已经损坏或者失灵。
- 慢查询有时候是结果,而不是原因。
- 定义性能的最有效的指标是响应时间(我也同意~)
诊断间隙性问题
- 尽量不要采取试错的方式,成本太高了。
- 如果是瞬间所有的查询都变慢了,之后又好,那应该确定是服务器问题,如果只有单条查询变慢,应该是查询问题。通过查询日志去观察不合理的地方,对其进行研究确定。
- 捕获诊断数据,在捕获的时候阈值不能太高,也不能太低,通过定时的执行脚本或者监控工具(如pt-stalk),来记录机器状态,以便分析。
- 需要收集的数据要尽可能多,包括系统的状态,cpu使用率,磁盘使用率,可用空间,ps的输出采样,内存利用率,以及可以从MySQL获得的信息。
- 对收集到的数据进行分析,有时需要从内核层面进行查看数据变化。
- 然后根据最近是否有变动,然后依靠经验去判断问题。(真难)
- 很多被检查的地方最终要么是完全正常的,要么就是问题导致的结果而不是问题产生的原因。
- 可以把问题写在纸条上,检查一个划掉一个。
- 当一个问题看起来很眼熟像是之前解决过的问题时,也要花一点时间去验证是否是真的那个问题。