`
qcyycom
  • 浏览: 188799 次
社区版块
存档分类
最新评论

Java性能调优方法:基于等待的调优(二)

 
阅读更多

    已存在应用

    已存在应用跟一个全新应用相比,一个明显的优点是:真实的用户行为可以在实际生产环境中观察获得。根据请求的本质和它们如何被应用定义,可以通过两个选择定义最终用户行为:

    ● 访问日志
    ● 最终用户体验监视器

    对于大多数基于web的应用来说,访问日志提供了足够的资源分析服务请求的本质和它们的均衡关系。Web服务器 可以配置成抓取最终用户请求信息并存储 在一 个日志文件中,称之为“访问日志”(因为该文件通常命名为“access.log”)。使用访问日志定位用户行为的关键是应用交互需要能够通过不同的 URI来区分。例如,如果之前例子的动作采用类似“/login.do”、“/processClaim.do”、“/logout.do”的URI,那 么我们可以非常容易的在访问日志中发现这些行为并确定它们的比例。更进一步,通过最频繁的URI来排序访问日志可以快速发现占比例前n%的的若干请求,这 个“n”%应该在80%左右。

    访问日志是文本文件,可以手动检查(不是一个很有效率的任务),可以通过编程解析,也可以通过工具来分析。对此有很多商业解决方案,不过Quest Software有一个产品Funnel Web Analyzer,虽然多年以前已经终止开发,但是由于其很受欢迎的命令,公司就作为将其作为自由软件重新发布。Funnel Web Analyzer可以分析大多数访问日志并显示用于创建合适负载测试的信息。

    一些应用不像上面提到的那样简单,其用户交互无法很容易的通过一个URI来定位。例如,考虑一个包含前端控制器servlet的应用,该servlet接受一个XML有效信息——并且其业务处理逻辑就存在于该信息中。在本例中,需要另外的工具来侦测其有效信息以判断其符合哪个业务场景。这可以通过使用 servlet过滤器或者一个称为最终用户体验监视器的硬件设备来完成。

    不管用户行为是如何获得的,它都是开始任何性能调优实践之前的关键先决条件。

    全新应用

    由于全新的应用没有任何最终用户行为可以分析,所以对我们提出了一个独特的挑战。定位新应用的用户行为需要三个步骤,如图1所示。

图 1 评估新应用的最终用户行为

    第一步,评估最终用户应该会做什么。这步是“猜一猜”的正式说法,但应该是一个经过培训的猜测过程。评估结果应该来自于以下双方的讨论:应用业务负责人和应用技术负责人。应用业务负责人,通常是一个产品经理,负责细化最终用户应该如何使用该应用程序——例如,他可能报告说最终用户会登陆、处理五个索赔请求、过期、处理五个索赔请求、生成两个报告、然后注销。应用技术负责人,一般是架构师或是技术lead,负责把业务交互的抽象列表翻译成用于生成负载测试的技术步骤——例如,他可能报告说登陆通过“/login.do” URI完成而处理一个索赔请求需要五个URI.这些人(或者小组或者一些大型项目里的委员会)应该一起提供足够的信息来建立一个基准负载测试。

    我们建立负载测试,用其调整应用和容器,应用程序部署到生产环境中,这一切做完之后,调优工作并没有结束。下一步是验证负载测试集。这通常是一个多阶段的活动:

    ● 冒烟测试验证:在实际运行的一两周之内验证原先的评估值是否符合真正生产环境下最终用户的行为。这步验证是为了确认在评估过程中没有明显的错误。
    ● 生产验证:一些应用需要用户花时间才能形成统一的使用方式。这个适应的时间长短因应用而异,可能是一个月或者一个季度,不过一旦用户的行为稳定下来,就需要验证最终用户行为是否与评估一致。
    ● 回归验证:最好在应用的生产周期中阶段性的验证用户行为,以防止用户行为改变或者引入新的功能或工作流导致用户行为改变。

    最后一步,也是经常被忽视的一步,就是反思。根据实际用户行为来反思评估的精确性是很重要的,因为只有通过反思,用户行为才能更便于理解,评估在以后的应用中才能得到提高。没有反思,相同的错误会一犯再犯,最终会增加调优的工作量。

更多信息请查看 java进阶网 http://www.javady.com

分享到:
评论

相关推荐

    Java性能调优PPT

    ### Java性能调优知识点概述 #### 一、高性能Java代码编写原则 - **算法与数据结构**:选择合适的数据结构可以极大地提升程序运行效率。例如,对于查找操作频繁的场景,哈希表(如`HashMap`)比链表或数组更高效。...

    Java性能调优方法[定义].pdf

    Java性能调优是一种针对Java应用程序进行优化以提升其运行效率和响应速度的技术。现代企业级Java应用具有高度的复杂性,涉及多种输入源、多输出形式、复杂的框架和业务处理引擎,这使得调优变得尤为困难。过去,基于...

    施懿民:生产环境下的Java排错调优

    ### 生产环境下的Java排错调优 #### 开源力量公开课第1期——生产环境下的Java排错调优 本次公开课由施懿民老师主讲,聚焦于生产环境下的Java排错与性能优化,这对于提高Java应用的稳定性和效率至关重要。 #### ...

    WAS性能调优对jvm、线程数、ORB大小的配置

    性能调优对于确保应用高效运行至关重要,尤其是对于处理高并发和大数据量的应用来说。本文将深入探讨“WAS性能调优对jvm、线程数、ORB大小的配置”这一主题。 首先,我们要理解JVM(Java Virtual Machine)在WAS中...

    针对java的性能测试与调优案例.pdf

    ### Java性能测试与调优案例 #### JDK优化 在Java应用开发过程中,为了提升程序运行效率及稳定性,对JDK的优化尤为重要。JVM(Java虚拟机)作为Java程序运行的基础,其性能直接影响到应用程序的表现。JVM有两种...

    在CMT上如何对Java Application调优

    在CMT(Chip Multi-Threading)平台上对Java应用进行性能优化是一个复杂且具有挑战性的过程,尤其是在处理高并发、大规模用户访问的场景下。本文将深入探讨如何在CMT架构下,通过调整JVM参数、优化多线程设计以及...

    Java企业版中性能调节的最佳实践.pdf

    本文档旨在探讨Java企业版(Java EE)环境下性能调优的最佳实践,包括方法论、负载测试工具、软件栈中的各组件调优策略以及未来性能趋势展望。 #### 二、方法论与过程 ##### SunTone-3D 应用方法论 SunTone-3D 是...

    Java并发编程:设计原则与模式(第二版).rar

    11. **并发性能调优**:书中还会讨论如何监控和优化并发程序的性能,包括JVM的并发参数调整、线程池的配置以及并发工具的使用等。 通过学习《Java并发编程:设计原则与模式(第二版)》,开发者可以掌握Java并发...

    基于java的开发源码-Visualvm 基于JAVA的CPU硬件资源管理器源程序.zip

    VisualVM是一款强大的Java性能分析工具,它由Oracle公司提供,是Java开发者进行性能调优的重要助手。本资料包含的源码是VisualVM针对Java应用程序的CPU硬件资源管理部分,通过分析这些源代码,我们可以深入了解Java...

    java性能分析工具.zip

    Java性能分析工具,如JProfiler,是开发人员和系统管理员在优化Java应用程序时的重要武器。JProfiler是一款功能强大的Java性能剖析器...无论是初学者还是经验丰富的开发者,都能从中受益,提升自己的Java性能调优技能。

    Visualvm 基于JAVA的CPU硬件资源管理器源程序.zip

    4. **Java性能调优**: - VisualVM支持JMX(Java Management Extensions),允许动态修改JVM参数,对于性能优化来说极其方便。 - 它还可以导出CPU和内存快照,用于离线分析,帮助开发者理解应用在特定时刻的资源...

    HBase配置项说明及调优建议.zip

    5. **性能调优**:`hbase.client.operation.timeout`和`hbase.rpc.timeout`定义了操作和RPC超时时间,防止长时间阻塞。`hbase.region.split.policy`选择合适的分裂策略,如`ConstantSizeRegionSplitPolicy`或`...

    java绩效管理系统.rar

    Java性能管理系统是一个基于Java技术构建的应用程序,用于管理和优化软件系统的性能。在Java环境中,性能管理涉及监控、分析和调优多个层面,包括CPU使用率、内存管理、线程活动、垃圾回收、数据库连接以及网络I/O等...

    mysql面试题-mysql经典面试题目-数据库的基本概念-SQL语法-事务处理-索引优化-性能调优-mysql-面试题目

    数据库性能调优涉及SQL优化、索引调整、资源分配、查询缓存和配置参数调整等多个方面。 查询优化器分析和选择执行查询的最佳路径,以最大化性能,它是数据库管理系统的关键组件。 数据库连接池的配置和使用涉及...

    javapms-1.2-beta.zip

    7. **性能调优策略**:基于javapms的数据,我们可以采取以下调优策略: - **内存调优**:调整JVM的内存分配,优化新生代和老年代的大小。 - **线程优化**:合理设置线程池大小,避免过多线程导致的资源消耗。 - *...

Global site tag (gtag.js) - Google Analytics