性能测试时,tomcat配置优化
,Tomcat连接数设置(建议的设置,可根据服务器的实际性能进行更改)
在tomcat配置文件server.xml中的配置中,和连接数相关的参数有:
1 maxThreads:Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。portal预置值300。
2 acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。portal预置值50。
3 minSpareThreads:Tomcat初始化时创建的线程数。portal预置值25。
4 maxSpareThreads:一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。portal预置值75。
5 connnectionTimeout:网络连接超时,默认值60000,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。portal预置值为30000毫秒。
6 maxKeepAliveRequests:保持请求数量,portal预置值100。
7 bufferSize:输入流缓冲大小,portal预置值2048 bytes。
把端口的配置替换为如下的内容,可以提高tomcat的性能,并且同时关闭tomcat的打印信息。
可以复制下面的代码进行粘贴后修改:
maxThreads="300" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
compression="off" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/css,text/plain"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
二,如果在性能测试中发现有tomcat内存溢出的错误,就需要加大虚拟内存了。
Tomcat默认可以使用的内存为128MB,Windows下,在文件/bin/catalina.bat,Unix下,在文件/bin/catalina.sh的前面,增加如下设置:JAVA_OPTS='-Xms【初始化内存大小】-Xmx【可以使用的最大内存】'需要把这个两个参数值调大。例如:JAVA_OPTS='-Xms256m -Xmx512m'表示初始化内存为256MB,可以使用的最大内存为512MB(普通PC机作为服务器下建议用此配置)。
从实际应用的角度来说。-Xmx大了不是很好,垃圾回收需要更多的时间,但是thread问题就很大,配给JVM的内存数越大,tomcat所能开的thread数就越小,最后出现ava.lang.OutOfMemoryError: unable to create new native thread。
如果给jvm分配过多,剩余供OS使用,其中windows的dll占了一部分,但是你在JVM创建线程的时候,创建的是OS的线程,他要从剩余的空间中分配内存。如果没有可用内存,出现上述错误。
如果是刀片4核,8G内存的服务器,如果布置两个tomcat,tomcat预置值建议可以设置为JAVA_OPTS='-Xms512m –Xmx1024m'。
本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/