性能测试培训:tomcat性能调优方法
性能测试培训:tomcat性能调优方法
poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。在poptest的loadrunner的培训中,为了提高学员性能优化的经验,加入了很多服务器方面的优化知识,为性能调优的能力打下基础。今天说明下tomcat性能优化的方法。(大家对课程感兴趣,请加qq:564202718)
tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。Apache 为HTML页面服务,Tomcat 实际上运行JSP页面和Servlet。Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为8.0。
你可以通过以下步骤来提高tomcat服务器性能:
1.增加JVM堆内存大小
2.修复JRE内存泄漏
3.线程池设置
4.压缩
5.数据库性能调优
6.Tomcat本地库
7其它选项
第一步:增加JVM的栈内存
tomcat服务器遇到比较普遍的问题是“内存溢出”. 产生问题的原因是tomcat分配比较少的内存给进程,通过修改Tomcat的配置文件(Windows下catalina.bat或Linux下catalina.sh)增加JVM的栈内存解决.这样JVM不用关注调用垃圾回收,服务器分配更多的资源处理web请求。
找到"\tomcat server folder\bin\catalina.sh"文件,内容如下:
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8
-server -Xms1024m -Xmx1024m
-XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m
-XX:MaxPermSize=512m -XX:+DisableExplicitGC"
-Xms – 指定初始化时化的栈内存
-Xmx – 指定最大栈内存
在重启你的Tomcat服务器之后,这些配置的更改才会有效。
第二步:避免JRE内存泄露
内存泄漏会引起性能表现不佳,tomcat版本6.0.26及以上就解决了服务器泄露问题,因为它包含了一个监听器来处理JRE和PermGen的内存泄漏。使用的监听器是:
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
你可以在“tomcat project folder/conf/server.xml”找到。
第三步:线程池设置
线程池的设置决定了Web请求负载的数量,“maxThreads”的值应该根据流量的大小来设置。值过低,没有足够的线程来处理请求,没有处理的请求将进入等待状态,只有当一个的处理线程释放后才会处理在线程池等待的请求;如果设置的太大,Tomcat的启动将花费更多时间。
<Connector port="8080" address="localhost"
maxThreads="250" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8181" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
上述配置,maxThreads值设定为“250”,这决定了服务器处理的并发请求的最大数量。这个属性的默认值为“200”。任何多出的并发请求将收到“拒绝连接”的错误提示,直到另一个处理请求进程被释放。错误看起来如下:
org.apache.tomcat.util.threads.ThreadPool logFull SEVERE: All threads (250) are
currently busy, waiting. Increase maxThreads (250) or check the servlet status
如在测试程序的过程中出现上述提示,务必检查上述错误是否是由于单个请求花费太长时间造成的,这就是因为连接池数量少了,设置不合理,导致请求都在等待,连接得不到不释放,进程将不会处理其它请求。用Loadrunner请注意在加压的时候可以通过加入页面请求的验证代码,如:
web_reg_find("Text= xxxxxx check the servlet status ",LAST);
备注:注意: 如果请求的数量超过了“750”,建议服务器最好使用“Tomcat集群”。也就是说,如果有“1000”请求,两个Tomcat实例设置“maxThreads= 500”,而不在单Tomcat实例的情况下设置maxThreads=1000。在做性能测试的时候会有1000w用户的访问,但是由于loadrunner没有合适的Licese,另外服务器的可能还会继续增加,用户数继续增加,我们就通过服务器实例的增长趋势和用户数的增长建立关联关系,来预估服务器的负载能力。
第四步:压缩
server.xml配置文件中设置压缩的选项。设置connector:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8181" compression="500"
compressableMimeType="text/html,text/xml,text/plain,application/octet-stream" />
compression中设置大于等于500bytes时才会压缩。设置属性compression="on"或者off开关设置是否压缩。
第五步:数据库性能调优
Tomcat性能在等待数据库查询时候会导致性能降低。如今大多数应用程序都是使用可能包含“命名查询”的关系型数据库。Tomcat启动时加载命名查询,会提升性能。另一件重要事是确保所有数据库连接正确地关闭。关注最大空闲数(maxIdle),最大连接数(maxActive),最大建立连接等待时间(maxWait)属性的值。
你可以通过调用数据库性能测试来找到正确的值。
说明:命名查询是把SQL语句配置到实体类的文件(*.hbm.xml)中。
第六步: Tomcat原生库
Tomcat的原生库基于Apache可移植运行时(Apache Portable Runtime简称APR),给程序员提供了超强的扩展性和性能,在产品运作中帮助融合原生的服务器技术以展现最佳的性能。安装说明请参考Tomcat Native Library – (APR) Installation。
第7步 其他选项
这些选项是:
a.开启浏览器的缓存,这样读取存放在webapps文件夹里的静态内容会更快
b.每当开机时,Tomcat服务器应当自动地重启。
一般情况下HTTPS请求会比HTTP请求慢。如果你想要更好的安全性,即使慢一点我们还是要选择HTTPS。
性能测试培训:tomcat性能调优方法的更多相关文章
- nginx+keepalived+tomcat之tomcat性能调优
body{ font-family: Nyala; font-size: 10.5pt; line-height: 1.5;}html, body{ color: ; background-color ...
- Tomcat性能调优实战
今日帮朋友做了tomcat性能调优的实际操作,心得记录一下. 服务器:Windows2017 配置:CPU 4 内存 8G Tomcat8.0+版本. 压力测试工具:apache-jmeter-4.0 ...
- Tomcat性能调优后, 启动出现警告问题 [did not find a matching property.]
http://blog.csdn.net/dracotianlong/article/details/8963594 Tomcat性能调优后, 启动出现警告问题 [did not find a mat ...
- tomcat有哪些性能调优方法
前几天看见一篇介绍性能调优文章,觉得不错.特此收藏(http://blog.csdn.net/lifetragedy/article/details/7708724)
- Web app 的性能瓶颈与性能调优方法
1. web app 性能测试工具使用 2. mysql 性能分析与调优方法
- Tomcat性能调优-JVM监控与调优
参数设置 在Java虚拟机的参数中,有3种表示方法用"ps -ef |grep "java"命令,可以得到当前Java进程的所有启动参数和配置参数: 标准参数(-),所有 ...
- 【转】tomcat性能调优
一.总结前一天的学习 从"第三天"的性能测试一节中,我们得知了决定性能测试的几个重要指标,它们是: ü 吞吐量 ü Responsetime ü Cpuload ü ...
- 通向架构师的道路之 Tomcat 性能调优
一.总结前一天的学习 从"第三天"的性能测试一节中,我们得知了决定性能测试的几个重要指标,它们是: 吞吐量 Responsetime Cpuload MemoryUsage 我们也 ...
- (转载)通向架构师的道路(第四天)之Tomcat性能调优-让小猫飞奔
转载自:https://blog.csdn.net/lifetragedy/article/details/7708724 参考文章:tomcat以及常用web容器线程池的实现原理https://bl ...
随机推荐
- Angular2组件与指令的小实践——实现一个图片轮播组件
如果说模块系统是Angular2的灵魂,那其组件体系就是其躯体,在模块的支持下渲染出所有用户直接看得见的东西,一个项目最表层的东西就是组件呈现的视图.而除了直接看的见的躯体之外,一个完整的" ...
- iOS上传代码到Github平台
对于开发人员来说,很多时候想把自己好的代码 demo放到一个公共平台,与大家交流,Github就是一个不错的平台,下面给大家说说Github的具体使用方法. 第一步.申请Github账号.https: ...
- 解决项目中找不到Maven Dependencies
项目中找不到Maven Dependencies 正常的Maven项目应该是这样的 自己的项目中却没有Maven Dependencies,自己百度了, 发现解决不了,最后发现在.classpath和 ...
- 上传图片,多图上传,预览功能,js原生无依赖
最近很好奇前端的文件上传功能,因为公司要求做一个支持图片预览的图片上传插件,所以自己搜了很多相关的插件,虽然功能很多,但有些地方不能根据公司的想法去修改,而且需要依赖jQuery或Bootstrap库 ...
- python excel操作总结
1.openpyxl包的导入 Dos命令行输入 pip install openpyxl==2.3.3 这里注意一下openpyxl包的版本问题 版本装的太高有很多api不支持了,所以笔者这里用的是2 ...
- find、findIndex、indexOf、lastIndex、includes 数组五种查询条件方法介绍
find() 方法返回数组中满足提供的测试函数的第一个元素的值. 语法: arr.find(callback[, thisArg]) findIndex()方法返回数组中满足提供的测试函数的第一个元素 ...
- Selenium Web 自动化 - 项目持续集成
Selenium Web 自动化 - 项目持续集成 2017-02-13 目录 1环境准备 1.1 安装git 1.2 安装jenkins 1.3 安装jenkins插件 1.4 jekins ...
- 【webpack】-- 模块热替换
全称是Hot Module ReplaceMent(HMR),理解成热模块替换或者模块热替换都可以吧,和.net中的热插拔一个意思,就是在运行中对程序的模块进行更新.这个功能主要是用于开发过程中,对生 ...
- Asp.Net 常用工具类之Office-文档操作(6)
文档一直是老大难问题,君不知,代码用时方恨少!有一套成熟的文件帮助类能很大程度上减少寻找各种资料的时间. 记得以前做一个业务,需要导出协议,一份可编辑,一份不可编辑.那么Word和PDF是最好的选择, ...
- Pdf File Writer 中文应用(PDF文件编写器C#类库)
该文由小居工作室(QQ:2482052910) 翻译并提供解答支持,原文地址:Pdf File Writer 中文应用(PDF文件编写器C#类库):http://www.cnblogs.com/ ...