`
shoushou2001
  • 浏览: 32919 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

性能排查的一般切入点

阅读更多

   平时主要是做J2EE开发,经常碰到系统运行慢,这时候就得考虑系统是否存在性能问题了。根据我的总结,性能排查一般可从以下几个方面着手,分别是网络、硬件、软件、技术实现:

1、网络:基于B/S架构的系统,客户端与服务端存在频繁的请求和应答,可能会存在大量的数据传输,带宽大小影响到数据传输所需要的时间,排除其它因素,在传输同等大小的数据,带宽越大,所需的时间就越少,所以网络是一个必须要考虑的对象。一般来说,那种小范围使用的系统,一般2M4M的带宽就够用了,但是那种大范围使用的系统,就得认真面对这个问题了,比如,南方用电信比较多,北方用铁通或其它的比较多,所以有些企业就多开通一个访问入口,电信用户用一个,铁通或其它的用户就使用另外一个。网络方面的排查还要看办事处的上网人数,以及网络类型。如果仅仅是一条2M的带宽,10个人使用,在不考虑传输损耗的情况下,平均分给每个人的就只有20K那样。办公专用的网络与家庭娱乐所用的网络也是不一样的,听说办公专用的是光纤,速度比家庭用的快一点,平时个人拉的主要是家庭类型的网络。

 

2、硬件:相对而言,硬件配置越高,并发性越好,单位时间能够处理的事务越多。硬件方面主要考虑配置较好的CPU,加大物理内存,使用读写速度比较快的硬盘,同时还要考虑多用几台服务器,比如:Web服务器、应用服务器、数据库服务器、文件服务器、邮件服务器等等,这样可把压力分散到几台机器上,现在内存是白菜价,多加几条是好事,听一些朋友说,他们都用816G内存的配置了,真幸福。。。硬盘就不要使用那些5400转的了。预算允许的情况下,也可以采用小型机来代替一般的PC。在单台服务器不能满足使用的情况下,可根据情况做硬件负载均衡,比如用F5Alteon,这类产品能够提供很优秀的性能和很灵活的管理能力,听说Yahoo中国当年约2000台服务器时使用了三四台Alteon就搞定了。

 

3、软件:软件可能会存在配置不当的情况,所以很多情况我都会直接在软件上排查。涉及到的软件有JDK、数据库管理系统、应用服务器、操作系统等等。要检查是否能用高版本的JDK,高版本JDK在垃圾收集方面功能比较强,而且可供配置的参数也比较多。数据库方面要考虑初始化参数是否配置合理、是否存在资源不足、是否需要升级等因素。应用服务器是否配置恰当的JDK参数。不少人反馈,相比WindowsLinux有着更好的并发性能。

 

4、技术实现:估计出现性能问题,很多人都会怀疑实现上存在问题。技术实现方面包含面太多太泛了,比如代码是否需要优化、SQL是还是需要优化、是否加索引、架构是否有问题、是否需要缓存、采用的一些框架是否有问题、前端脚本框架是否会造成客户端IE内存泄漏或是造成数据传输量过大。每一面具体排查起来,又可以有多种途径去排查,这时候可以借助一些工具协助排查,比如FindbugsHttpWatchMATJDK自带的一些工具等。技术实现方面的影响特别大,比如,我们的流程中有一个选择处理人的界面,用户也就500多,以前选择一个处理人,要等上三五分钟,后来,专门对这个功能做性能排查,加了索引,对部分代码做了优化,现在只需要几秒钟的时间就能选定处理人。还有,我们一个销售系统,隔几个小时就需要重启服务,一时弄不清楚那里出问题,有点无从下手的感觉,一个偶然的时机,拿到了关闭服务时的dump文件,用MAT做分析,发现是IBatis缓存造成的。技术实现方面带来的性能问题是比较多的,在这方面要细致,多角度考虑才能较好地找出问题所在。

 

以上是我根据实际工作对性能排查切入点做的简单划分,主要分为网络、硬件、软件及技术实现四个方面。这样划分可能存在不合理的地方,也会存在交叉的地方,主要是希望在出现性能问题的时候,有一个参考,然后根据这样的一个参考,整理思路,再沿着某一点深入排查。各位朋友,你们能否也分享一下你们的实际工作经验以及本文的看法,^_^

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics