6
回答
假如你的项目出现性能瓶颈了,你觉得可能会是哪些方面,怎么解决问题
开发十年,就只剩下这套Java开发体系了   

假如你的项目出现性能瓶颈了,你觉得可能会是哪些方面,怎么解决问题

<无标签>
举报
天天爬网
发帖于2年前 6回/1K+阅
共有6个评论 最后回答: 1年前

菜鸟分享自己的看法, 不喜勿喷!!

个人觉得项目性能瓶颈,不外乎三个大因素

  • 程序代码
  • 操作系统
  • 网络环境

如果想要解决瓶颈,那么应该先定位瓶颈的位置究竟是在哪一点,或者是哪几点。可以先从简单到复杂开始排查:

上诉三大因素,最简单的就是网络环境了,一句话,如果带宽没爆/延时,抖动什么都没问题,那么你的网络都不是瓶颈。如果带宽一下子就爆了,先判断这个流量是不是正常的,不是程序bug导致的哈,那么咱们需要加大带宽或者解决了网络环境暴露出来的问题等等,如果在处理之后,我们发现程序跑的更好了,那么可以暂时评估是网络环境造成,

如果网络环境没问题,就来判断系统方面。系统方面的关注点不外乎就是:操作系统类型,内核版本,内存,cpu,磁盘IO,文件数,并发数等等。其实这些指标的标准没有一个固定的值。都是根据系统硬件、软件来共同决定。如果从相关系统命令的输出,没看出什么峰值,或者没看出什么短板,可以针对多个不同内核版本,不同的系统类型做控制变量对比(如果有这必要)。同样的,如果能够分析出那个指标出现问题,进而判断出哪些硬件需要替换,那么就可以尝试整改。如果程序经过整改之后,得到更好的发挥,ok,那么系统瓶颈算是过了。

最后,也是最难排查的,就是程序。针对程序的性能瓶颈,其实在选型的时候就应该有第一次的筛选,是选用java,还是c,还是Python。不管选的是什么,自己心里肯定有个度,既然选了,只能扬长避短,取其精华去其糟粕了。不要花时间在优化语言短板,可以考虑用别的语言去协助开发,虽然这样看起来有点杂甚至难管理,不过有必要的话也不失一个好办法。语言的级别讨论完,就是代码级别了。同一个功能,不同的编码方式,都可能产生天与地的差别,所以我们需要不断的回顾,去优化能优化的code。而且因为程序是团队合作的结晶,很多时候,每个人都只清楚自己负责那一块,也觉得自己那部分写得很棒,这可能会导致当局者迷,所以可以考虑多人一起review,采取好的建议,将代码优化得更好。

性能优化是一个艰难的,同样也是一个很有成就感的事情,希望大家能够多点分享,一起做得更好

 

--- 共有 4 条评论 ---
lllyl2012 回复 @节节草 : 2个月前 回复
Lin_R 回复 @BoXuan : 我阐述的都是单个节点规模小的项目,如果是放宽到多个节点,规模较大的项目,那么重中之重肯定就是前期系统架构、服务架构的设计。在健壮性延展性等各方面都应该是要符合业界主流或者符合公司情况的方案,然后再细分才是小范围的优化 2年前 回复
bug0day我感觉他回答的挺好,系统架构比较宽泛,性能问题是不是应该先定位性能热点 2年前 回复
银杏果果影响性能瓶颈的最大因素是系统架构,其次才是代码质量,操作系统和网络环境这些都是次要的,因为变化操作系统和提升网络环境都相对简单很多。 2年前 回复

系统架构肯定是第一个要关心的。很多其他涉及性能的问题,都会因为架构原因导致无法优化。哈。

架构不单单针对大系统,小系统,例如计算量高的,数据流向的合理设计,也是个架构问题。想充分发挥硬件资源,同样也是架构问题。

当然架构没问题,各模块优化已经到位,仍然出现不符合设计预期的情况,这多半要改底层硬件了。其实加内存不也是改硬件的一项工作嘛。哈。

模块的优化,确实涉及语言和具体程序代码质量问题。这块要看预期和实际的差异。理论分析得到的性能指标总是达不到,那么代码确实有的要调整了。。

顶部