`
shoushou2001
  • 浏览: 33714 次
  • 性别: 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缓存造成的。技术实现方面带来的性能问题是比较多的,在这方面要细致,多角度考虑才能较好地找出问题所在。

 

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

 

分享到:
评论

相关推荐

    案例加持:一小时掌握这套MySQL故障排查思路方法_崔虎龙.pdf

    日常运维和突然事件发生时,应对问题的首要反应应包括查看MySQL日志(例如mysql_error.log),监控关键指标如CPU、IO、网络、并发线程,以及应用层面的描述,这些都是问题分析的切入点。 当分析问题时,需要从多个...

    spring的aop方式,审计记录用户操作步骤服务,mysql数据库

    切入点是定义关注点在程序中的位置,而通知是在特定切入点执行的代码片段。 1. **创建审计注解**: 审计功能通常需要自定义一个注解,例如`@AuditLog`,标记在需要审计的方法上。这有助于在运行时识别哪些方法需要...

    SystemTap动态跟踪数据库性能.pptx

    对于那些想要深入研究MySQL源码但又觉得代码量过大的开发者,SystemTap提供了一种有效的切入点,通过实际的性能数据,可以形成正向反馈,推动开发者持续学习和优化。因此,掌握SystemTap不仅可以提升个人的技术能力...

    spring第四天.pdf

    切入点通常由切入点表达式定义。 3. **通知(Advice)**:在特定连接点执行的代码,即切面实际执行的操作。通知有五种类型:前置通知(Before)、后置通知(After)、返回通知(After Returning)、异常通知(After...

    aspectjweaver-1.7.2.jar

    2. 优化切入点:合理编写切入点表达式,避免过于宽泛的匹配,以免影响性能。 3. 谨慎使用LTW:虽然LTW灵活性高,但其性能开销可能比CTW大,对于性能敏感的场景,应优先考虑CTW。 4. 使用注解驱动:AspectJ支持注解...

    aop 日志记录

    在AOP中,切面是包含通知(advice)和切入点(pointcut)的模块,通知是在特定切入点执行的代码片段。切入点定义了何时、何地以及针对哪个方法应用通知。日志记录通常作为横切关注点,因为它会影响到程序的多个部分...

    spring AOP 切面日志 分层打日志

    3. **定义切入点**: 使用`@Pointcut`定义切入点表达式,匹配我们需要日志记录的方法。例如,我们可以根据方法的名称或所在的包来定义。 4. **注册切面**: 在Spring配置文件(如`applicationContext.xml`)中,使用`...

    spring aop实现日志功能

    标题"spring aop实现日志功能"涉及到的是如何利用Spring AOP来记录和跟踪应用程序中的操作,这对于调试、性能分析和故障排查至关重要。下面我们将详细探讨如何通过Spring AOP来实现日志功能。 首先,理解AOP的基本...

    Timercheck时间进程管理软件

    总的来说,Timercheck是一款强大的系统工具,它以进程时间为切入点,提供全方位的系统监控和管理能力。无论是为了日常的系统维护,还是为了排查复杂的性能问题,Timercheck都能成为用户得力的助手。在使用过程中,...

    spring-aop-aspectj(Schema)-case

    标题 "spring-aop-aspectj(Schema)-case" 指涉的是Spring AOP(面向切面编程)中使用AspectJ的Schema配置...同时,掌握源码分析能力也有助于深入理解Spring AOP和AspectJ的工作原理,为故障排查和性能优化提供基础。

    Spring aop.rar

    通过定义切面和切入点,我们可以无侵入地记录方法执行的相关信息,这对问题排查和系统监控至关重要。对于初学者来说,理解并掌握这些概念将有助于提升他们对Spring框架以及面向切面编程的理解。

    java aop拦截方法类前后添加日志

    通过定义切面,我们可以定义切入点(Pointcut)——确定哪些方法会被拦截,以及通知(Advice)——在切入点触发时执行的代码。 在给定的文件中,有两个关键文件:`AroundLogAspect.java` 和 `AroundLog.java`。`...

    Oracle数据库业务优化心得

    在Oracle数据库业务优化中,SQL是切入点,执行计划是关键,而监控工具和报告则提供了宝贵的诊断信息。通过持续监控、分析和调整,可以不断提升系统的稳定性和性能,满足大量用户并发访问的需求,减少用户对系统性能...

    oracle 语句优化

    SQL优化作为最直接的切入点,是改善Oracle性能的第一步。通过现代的可视化工具(如PL/SQL Developer或TOAD)获取和分析执行计划变得更为便捷,但在远程问题排查时,掌握Oracle原生方法也很重要。 总结来说,Oracle...

    aopDemo.rar

    AOP的核心概念是"切面",它包含了"通知"(advice)、"连接点"(join point)、"切入点"(pointcut)和"织入"(weaving)。在这个demo中,"前置通知"(before advice)是在方法执行前运行的代码,而"最终通知"(after...

    庖丁解牛 纵向切入asp.net3.5控件和组件开发技术 代码

    - 在正确的时间点进行数据绑定、事件处理和状态管理,避免出现意外行为。 5. **数据绑定** - ASP.NET 3.5引入了强大的数据绑定机制,如DataSource控件和Linq to SQL。 - 数据绑定控件如GridView、ListView、...

    优质课件(2022-2023)半导体集成电路原理与设计—第一章答辩.ppt

    本篇文章将以本课程第一章内容为基础,探讨集成电路的基础制造工艺,并以双极集成电路的制造流程为切入点,详细解析材料选择、掩模版设计、工艺设计等关键步骤。 首先,集成电路的制造始于材料的选择和参数设定。在...

    S2SH配置部署日志切面拦截器

    这通常通过或元素完成,指定切入点表达式(pointcut expression)来决定哪些方法会被拦截。 "web.xml"是Web应用的部署描述符,这里我们将Struts2的过滤器配置写入,包括ActionContext清洁器、DispatcherServlet等,...

    spring AOP日志框架

    在Spring AOP中,日志框架的集成使得我们能够方便地对应用程序的执行过程进行跟踪和记录,这对于调试、性能优化以及问题排查至关重要。 要实现基于注解的日志管理,首先我们需要理解几个核心概念: 1. 切面...

Global site tag (gtag.js) - Google Analytics