性能优化老生常谈,各种面试中也避不开的一个问题,总会问你们qps有多少啊,对于xx优化怎么看啊,你们一般怎么优化啊等等
然后,有些人会回答一些,不用include_once用include之类,这些是细节,但在一个性能足够拖沓的项目里,你去改变这些细节并不能带来可观的优化效果
关于性能,比较直观的指标就是qps能达到多少,而qps的高低,其实最主要的不是软件写的怎么样,而是你硬件跟不跟的上,前提是你软件里别出现什么大量循环,但是,硬件要钱啊,一个中型项目每个月的服务器费用也得几百万,那怎么办,薅点羊毛吧,优化优化程序吧,优化的好还是有可观的收益的,以我的经验来看大概是底下这个流程
1. 找出性能瓶颈
神牛爱因斯坦曾说,提出一个问题往往比解决一个问题重要,不绝对但也很有道理,问题都找不到谈什么解决呢?
那怎么找问题呢?一行一行看代码吗?前段时间去听了一个讲座,关于网络安全的,讲师是个资深黑客了,有个说法我感觉很有道理,黑客已经进入了工业时代,某些企业的安全防护还处在农耕时代,嗯,抛砖引玉,工具很重要,要提高效率,有很多在线监测性能的服务,譬如国内的oneapm,国外的tideways等,但有些场景,我们需要保证数据不外泄,那只能搭建自己的性能监控平台
推荐tideways + xhgui
tideways是一个php扩展 ,xhgui是一个开源的前端界面,xhgui的原作者已经不维护了,后来国内有了一个汉化版,“用户体验”“比较好”
tideways 怎么用,please google
xhgui 怎么用 please google
2. fix it
假设问题你已经找到了,可能问题出在缓存上面,某些key的读写频率过高了,缓存淘汰策略不合理了也可能出在数据库身上了,慢查询过多了,有全表查询啊,索引使用不当啊等,这些问题是比较好解决的,不好解决的是历史遗留问题和架构问题,一个单机系统的架构要改成集群,涉及分表分库,数据落地等问题,集群迁到分布式涉及通信方式,数据同步,网络延迟等问题
嗯,见招拆招,没啥好建议。
3. 测试
对于后端来讲掌握一个好用的测试工具也是事半功倍,推荐jmeter,开源免费支持分布式
如有错误,欢迎指正批评
网友评论