惠新宸:性能优化那些事儿

上周末的领秀新硅谷迎来了第三期听云应用性能管理大讲堂,来自不同行业的小伙伴们在满是干货的半天时间里收获颇多,有链家网系统工程师尹吉峰带来的链家网存储系统演变过程,也有听云CTO Wood分享的听云端到端应用性能管理(APM)解决方案以及听云APM在应用性能管理上的实践经验与技术,还有58同城系统架构师孙玄带来的当数据量增大和业务并发时遇到的问题及其解决方案,而将现场气氛引到最高潮的,是鸟哥(惠新宸)。

作为国内最有影响力的PHP技术专家,现任新浪微博平台及数据部总架构师兼首席PHP顾问的鸟哥(惠新宸),在编程语言实践与系统架构方面有着丰富的性能优化经验,这次沙龙,鸟哥基于他个人的经验总结,在性能优化方面给予大家很多合理实用的建议。


鸟哥(惠新宸)

性能为什么很重要

鸟哥说:“应用性能最重要的不仅仅是执行快的问题,它包含很多方面的问题,比如说服务器负载,吞吐都属于性能范畴。”

鸟哥认为,在关注应用性能之前,应该先考虑应用的正确性、稳定性和安全性,然后再考虑性能。我们都需要去想一个问题,我们关注的性能到底是什么?是速度还是投入产出比,是系统的优化性还是代码的正确性,确定方向以后再开始优化。

而我们的系统到底有没有问题?一个高性能的系统往往是最漂亮的系统,一般来说,当你接手一个系统准备开始优化时,凭经验来讲,一个从诞生到目前为止从来没有真正进行性能优化的系统,优化后的提升率可以达到30%以上,30%是对于大小公司都是一个很可观的数字。

永远不要微优化,永远不要凭主观臆测去优化

鸟哥说:“性能优化不应该是一个人或者一个团队的事。”

鸟哥给我们举了个很有趣的例子,一个师兄创业说他们以前系统是CTO一个人做的,这个CTO特别有技术情怀,怎么个技术情怀法?这个人后来辞职了,就再也找不到人接手这个系统。不仅是系统,所有的系统周边的事情,例如测试,上线,运维,开发习惯等等都需要成本的,这些都不该是某个人或者某个团队自己的事。

当你确定系统需要性能优化时,你需要一个标准来衡量优化的过程,同时也需要定出优化步骤,把性能优化过程拆解成已周或月为单位的时间段,而不是干了大半年不知道结果如何,当然最重要的是我们需要确认我们正在进行的性能优化会不会对原来的系统有影响。没有人能确保自己的代码绝对正确,所以永远不要凭主观臆测去优化。

什么时候开始,什么时候结束

鸟哥说:“性能优化应该从业务层面到管理层,再往下发展到不同层面,最上面的业务层优化收益往往最大。”

我们做优化最重要原因是要以最小代价获得最大效益,比如说原来调用了7、8个API,优化完以后发现可以合并运行,这就是最大的收益,我们一定从消耗最大的方向入手。

业务层面怎么优化?必须对业务非常熟悉,安排一个独立优化部门并没有太大的作用。参与优化的人员每一个人都写日志非常必要的,从系统环境开始入手做优化,首先配置有没有问题,再往下是模块合适与否,最后拓展到不同层面上,这才是从上往下优化过程,这个过程一直持续到你满意为止。

建立一个“系统”去优化你的系统

鸟哥说:“运维的核心是可视化,监控非常重要,类似服务器监控,性能监控等。而运维监控核心是把系统中存在的各种问题汇成一个非常可视,非常易于去看的东西。”

整个性能优化最核心地方是什么?要有一个监控或者报告,告诉你哪里出了问题。系统优化最大问题不是怎么去优化,而在于你发现这个地方有问题。一个好的团队需要构建一个能一览全局的系统来监测性能,第一时间得到的信息越多,排除问题可能性就越快。

然而这样的系统是非常难做的,但是效果会非常明显,如果你有这样的系统,你的应用一定会是高效。而听云是国内应用性能管理领域的佼佼者,推荐大家去使用。

鸟哥说“做应用性能优化工作应该是很有意思,很有成就感的一件事”,鸟哥说“性能优化不是一次性的事”,鸟哥说了很多很多,而每一次提及应用性能管理及优化时,仿佛都有说不完的故事,然而时间不允许我们过多的驻足,关于性能优化那些事儿,我们还是留到下一次大讲堂上再说吧。

鸟哥演讲课件下载:http://bbs.tingyun.com/forum.php?mod=viewthread&tid=62&extra=