现在的位置: 首页 > 架构设计 > 正文

程序员必须掌握的性能调优

2019年12月27日 架构设计 ⁄ 共 1154字 ⁄ 字号 评论关闭

  架构师这个岗位之前在业界还是很罕见的,不懂预估并发用户、业务数据等规模,自然就预见不到后续并发访问和海量数据会带来巨大的性能挑战。我们赶着工期把功能需求实现、业务流程跑通,然后就上线了,但移动互联网爆发的那些年业务增长非常快,系统上线不久就遇到性能问题了,其现象就是原来耗时很短的操作现在动不动就超时,或者界面刷不出来数据等等。

  性能调优任务不像普通开发任务,它需要背负业务、时间和难度等多种压力。罗马不是一天建成的,导致性能问题的原因错综复杂,不知道从何处下手,找不到解决问题的切入点。好性能不是调优出来的,更多是设计出来的。只有经历过性能调优,才能体会这句话的真谛。性能调优,其实就是对承载业务的现网系统做重构优化,就像是边开车边换轮胎,它所需要的技能跟代码重构完全不在一个层级上。

  性能是系统性问题

  性能调优离不开架构视角。不识庐山真面目,只缘身在此山中。当你陷在具体的、局部的问题当中,你是无法找到解决问题的思路的。你必须从实现细节跳脱出来,从更加宏观全局的视角来梳理业务流程,就像文末链接的系列文章《图解SpringCloud:HTTP请求的处理流程与机制》的剖析过程类似,然后以业务流程为线索分析每个环节存在的性能瓶颈原因,这样你就不再困惑了。

  当每个环节潜在问题梳理出来之后,根据资源、时间等外部限制,按照帕累托二八原则,你可以决定优先解决哪些问题,从而有条不紊地化解性能压力了。随着在性能调优上的经验不断丰富,你就越来越有信心掌控更大规模的系统了。更值得高兴的是,当你费老牛劲把这些自己挖的巨坑填上后,你就记得下次不要再给自己挖坑了,也就懂得怎样设计一个高性能的互联网系统了,这不就是从开发跃迁至架构的契机吗?

  性能调优,是从开发岗跃迁至架构岗的拦路虎。升级思维的过程是痛苦的,尤其是在背负压力下的被动升级,跳出原先的舒适区,进入更大的舒适区,这样才能站上新平面。记得当时老兵哥我还有不少负面情绪,回顾过往才懂得要感谢当时的领导给我这份压力,逼迫我高强度学习并突破了旧的思维,机会和挑战是并存的。性能优化是一个不断迭代、持续进行的过程,涉及软件开发生命周期的所有阶段,对于某款采用Hibernate作为持久层框架的JavaEE典型应用程序,性能优化会涉及以下几个方面:

性能调优

  业务规则调优,包括业务流程、交互设计等

  应用容器调优,包括启动参数、连接数和线程数等

  Spring调优,包括事务管理、二级缓存等

  Hibernate调优,包括批量操作、抓取策略和缓存等

  数据库调优,包括索引、SQL语句和配置等

  JVM调优,包括内存、垃圾回收GC等

  底层系统调优,包括操作系统、硬件等

  结束语:以上就是关于基于程序员必须掌握的性能调优的全部内容,更多内容请关注学步园。

抱歉!评论已关闭.