`
Tristan_S
  • 浏览: 378035 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA性能测试与调优案例

 
阅读更多
Tomcat性能监控与优化
1> 内存使用调整(Out of Memery问题)
set JAVA_OPTS='-Xms256m -Xmx512m'
2> 连接线程数调整(cannot connect to server问题)
优化tomcat配置:maxThreads="500" minSpareThreads="400" maxSpareThreads="450"。
maxThreads 默认200
acceptCount – 最大排队数

maxThreads如何配置
一般的服务器操作都包括量方面:1计算(主要消耗cpu),2等待(io、数据库等)
第一种极端情况,如果我们的操作是纯粹的计算,那么系统响应时间的主要限制就是cpu的运算能力,此时maxThreads应该尽量设的小,降低同一时间内争抢cpu的线程个数,可以提高计算效率,提高系统的整体处理能力。
第二种极端情况,如果我们的操作纯粹是IO或者数据库,那么响应时间的主要限制就变为等待外部资源,此时maxThreads应该尽量设的大,这样才能提高同时处理请求的个数,从而提高系统整体的处理能力。此情况下因为tomcat同时处理的请求量会比较大,所以需要关注一下tomcat的虚拟机内存设置和linux的open file限制。

现实应用中,我们的操作都会包含以上两种类型(计算、等待),所以maxThreads的配置并没有一个最优值,一定要根据具体情况来配置。
最好的做法是:在不断测试的基础上,不断调整、优化,才能得到最合理的配置。
acceptCount的配置,我一般是设置的跟maxThreads一样大,这个值应该是主要根据应用的访问峰值与平均值来权衡配置的。
如果设的较小,可以保证接受的请求较快相应,但是超出的请求可能就直接被拒绝
如果设的较大,可能就会出现大量的请求超时的情况,因为我们系统的处理能力是一定的。
web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。


Tomcat Native library
所谓的Apache Tomcat Native library其实叫APR,全称为:Apache Portable Runtime and Tomcat。可以通过下面地址访问:http://tomcat.apache.org/tomcat-5.5-doc/apr.html

Apache Tomcat Native library是Apache 为了提升 Tomcat 的性能搞的一套本地化 Socket, Thread, IO 组件也就是说它有高级 IO 功能, 操作系统级别的功能调用, 以及本地进程处理等等, 这些都能使 Tomcat 更像一个 Web Server(像Apache那样), 而不是只能用来解释JSP, 也就是说提升单独的 Tomcat 作为服务器的吞吐性能.


Connector
四种Connector按照顺序命名为 NIO, HTTP, POOL, NIOP
NIO 是性能最好的, 由APR提供
作为开源web服务器的java实现,tomcat几乎就是web开发者开发、测试的首选,有很多其他商业服务器的开发者也会优先选择tomcat作为开发时候使用,而在部署的时候,把应用发布在商业服务器上。也有许多商业应用部署在tomcat上,tomcat承载着其核心的应用。但是很多开发者很迷惑,为什么在自己的应用里使用tomcat作为平台的时候,而并发用户超过一定数量,服务器就变的非常繁忙,而且很快就出现了connection refuse的错误。但是很多商业应用部署在tomcat上运行却安然无恙。
其中有个很大的原因就是,配置良好的tomcat都会使用APR(Apache Portable Runtime),APR是Apache HTTP Server2.x的核心,它是高度可移植的本地库,它使用高性能的UXIN I/O操作,低性能的java io操作,但是APR对很多Java开发者而言可能稍稍有点难度,在很多OS平台上,你可能需要重新编译APR。但是从Tomcat6.0以后, Java开发者很容易就可以是用NIO的技术来提升tomcat的并发处理能力。
使用NIO连接器,只需要在server.xml里把 HTTP Connector做如下更改:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
改为
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" />

AJP连接器
由于tomcat的html和图片解析功能相对其他服务器如apche等较弱,所以,一般都是集成起来使用,只有jsp和servlet服务交由tomcat处理,而tomcat和其他服务器的集成,就是通过ajp协议来完成的。


oracle性能监控、诊断分析与调优
监控方法
方法1:在LR的Controller中配置监视Oracle
方法2:使用SiteScope
方法3:使用Oracle企业管理器查看数据库性能

控制Session的时间
Tomcat默认设置为30分钟

Old区用于存放长寿的对象,在New区中经历了N次垃圾回收后仍然存活的对象,就会被放到Old区中;如那些与业务信息相关的对象,包括Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。当任何一个空间不够用时,都会促使JVM执行垃圾回收,而垃圾回收也需要消耗一定的时间,从而造成应用程序卡住;因此,合理的设置各个区的大小,可以进行快速GC即Mimor GC,避免频繁的Full GC。

JVM启动参数介绍
-Xmx
-Xms

JVM性能瓶颈
在HashMap中放置大量不用的数据,而没有及时的清理。

Demo
1>  LeakExample  有些static集合中的数据没有被释放掉
2>  用web的方式演示了static集合的问题
3>  死锁演示 通过Thread图能看到死锁的问题
分享到:
评论

相关推荐

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

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

    Java生产环境下性能监控与调优详解课程笔记(完整版)

    一、Java性能监控工具 1. JVisualVM:集成在JDK中的一个多用途工具,可以进行内存分析、线程快照、CPU分析等,直观了解程序运行状态。 2. JConsole:同样是JDK自带的监控工具,提供了GUI界面来监视Java应用程序的...

    《软件性能测试、分析与调优实践之路-第二版》ppt 课件总结

    ### 《软件性能测试、分析...通过以上详细的分析与实践,本书不仅提供了全面的理论知识,还结合了大量的实际案例,帮助读者深入理解软件性能测试与调优的核心概念和方法论,为提高软件系统的稳定性和效率提供有力支持。

    第三章 鲲鹏应用性能测试与调优.pptx

    本章主要介绍在数据库、大数据和HPC场景下进行性能测试的方法,使用华为鲲鹏性能优化工具Kunpeng Tuning Kit对C/C++类程序和Java Mixed-Mode类程序进行性能分析的方法,以及对NUMA和线程并发数进行性能调优的案例。

    性能测试调优分析.rar

    性能测试调优分析是软件开发过程中的重要环节,旨在确保应用程序在高负载和大量并发用户情况下仍能保持高效稳定的工作状态...通过文档“性能测试调优分析.doc”,可以更深入地学习和了解这一领域的实践经验和案例分析。

    Java 工程性能调优教程

    本教程旨在帮助开发者深入理解Java性能优化的各种技术和策略,提高程序运行速度,减少资源消耗,从而提升软件的整体性能。 课程分为八大模块,详细内容如下: 1. **模块一:概述**(2讲): 这部分主要介绍性能...

    java性能调优文档(sun)

    ### Java性能调优知识点 #### 一、概述 在《Sun Java System Application Server Enterprise Edition 8.2 Performance Tuning Guide》这份文档中,主要介绍了如何针对Sun Java System Application Server ...

    Java性能调优实战——覆盖80%以上的Java应用调优场景

    开篇词讲怎样才能做好性能调优02讲如何制定性能调优策略04讲...索引的失效与优化36讲什么时候需要分表分库37讲电商系统表设计优化案例分析39讲答疑课堂:MySQL中InnoDB的知识点串讲加餐讲推荐几款常用的性能测试工具

    JVM实战-JVM调优案例分析与MyEclipse性能调优实战

    ### JVM实战-JVM调优案例分析与MyEclipse性能调优实战 #### 实验背景与目标 在现代软件开发过程中,提升开发效率是至关重要的环节之一。MyEclipse和Eclipse作为主流的集成开发环境(IDE),被广泛应用于Java项目的...

    深入性能测试LoadRunner性能测试,流程,监控,调优全程实战剖析

    实战部分将结合具体案例,展示如何运用LoadRunner进行性能测试,从创建测试脚本,到设置场景,再到分析结果,最后实施调优措施,步步深入,帮助读者掌握LoadRunner的实战技巧。 6. **学习资源** 提供的"深入性能...

    4本高清中文版Java性能优化经典书籍

    书中详细阐述了Java性能监控和调优的策略,包括性能测试、CPU使用率分析、内存泄漏检测、线程分析等。通过这些工具和方法,开发者可以找出程序的瓶颈,从而针对性地优化代码。此外,书中还讲解了JDK自带的性能分析...

    软件性能测试过程详解与案例剖析-高清

    本资源“软件性能测试过程详解与案例剖析-高清”深入探讨了这一主题,旨在帮助测试人员和开发人员理解性能测试的重要性,掌握其实施步骤,并通过实际案例加深理解。 性能测试的主要目标是评估软件在高并发、大数据...

    性能调优实战记录(doc)

    本文通过一次实际的性能调优案例,深入探讨了如何定位和解决性能问题。首先,问题起因是因为一个消息平台在二期开发完成后,在性能测试中出现了响应速度波动大,TPS(每秒事务数)和请求响应时间不稳定的情况,低谷...

    性能参数调优

    另外,提到的并发测试脚本调优,说明了在性能测试中,模拟真实用户行为的脚本编写至关重要。需要确保脚本能准确地模拟用户操作,并且能够反映出真实环境中的性能问题,以便进行针对性的调优。 在测试过程中发现的...

    个人总结之—JVM性能调优实战

    本文档是一篇关于JVM(Java虚拟机)性能调优的经典实战总结。在实际应用开发与维护过程中,JVM性能调优是一个非常重要的话题,它直接关系到应用程序运行效率、资源利用以及用户体验等多方面因素。本总结旨在分享作者...

Global site tag (gtag.js) - Google Analytics