性能测试培训: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 ...
随机推荐
-
三:关于tcp
转自:http://www.jellythink.com/archives/705 TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深 ...
-
Bootstrap库之Modals
Bootstrap库之Modals. Bootstrap是Twitter推出的一个开发工具包,包含了一些比较常用的CSS,JavaScript代码.使用Bootstrap可以加快前端开发的速度.本站( ...
-
nginx的pass_proxy遇到的坑
Pass_proxy走内网,被请求方的php使用remote_addr得到就是转发机器的内网地址,如192.168.10.141这样的.走外网,被请求方php的remote_addr得到就是转发机器的 ...
-
AngularJS快速入门指南07:Http对象
$http是AngularJS提供的一个服务,用来从远程服务器读取数据. 提供数据 下面的数据由Web服务器提供: { "records": [ { "Name" ...
-
[USACO2004][poj1985]Cow Marathon(2次bfs求树的直径)
http://poj.org/problem?id=1985 题意:就是给你一颗树,求树的直径(即问哪两点之间的距离最长) 分析: 1.树形dp:只要考虑根节点和子节点的关系就可以了 2.两次bfs: ...
-
phpspec安装配置
安装 composer require phpspec/phpspec -dev 运行 bin/phpspec 在laravel中 vendor/bin/phpspec 配置phpspec.ym ...
-
pcxFirefox 自定义
便携特性(ini设置) 把与firefox.exe同文件夹的tmemutil-sample.ini 改名为tmemutil.ini,设置如下: Portable=1 #便携式 Portable ...
-
cocos2dx 音效 粒子 数据存储
1.音效 引入头文件 #include "simpleAudioEngine.h" 命名空间 using namespace CocosDenshion; //创建一个背景 Siz ...
-
Python内置函数(56)——locals
英文文档: locals() Update and return a dictionary representing the current local symbol table. Free var ...
-
Mac OS X 10.8.4下面XZ Utils(*.tar.xz)压缩解压缩命令工具的安装
主要参考:http://bbs.chinaunix.net/thread-3610738-1-1.html 现在很多找到的软件都是tar.xz的格式的,xz 是一个使用 LZMA压缩算法的无损数据压缩 ...