Tomcat调优,主要修改conf/server.xml的文件
1、定义线程池
Executor是公共的线程,定义一些公共的参数,参数不一样的定义在Connector
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" acceptCount="1000" minSpareThreads="50" maxSpareThreads="100" maxIdleTime="600000" />
name:定义名字以便Connector类调用,也可以让多个Connector调用,就达到了公用线程池的效果
namePrefix="catalina-exec-" 在JVM上,每个运行线程都可以有一个name 字符串。这一属性为线程池中每个线程的name字符串设置了一个前缀,Tomcat将把线程号追加到这一前缀的后面。默认值:tomcat-exec-;
maxThreads="1000" Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。默认值200。可以根据机器的时期性能和内存大小调整,一般可以在400-500。最大可以在800左右。
acceptCount="1000" 当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100
minSpareThreads="50" Tomcat初始化时创建的线程数。默认值4。如果当前没有空闲线程,且没有超过maxThreads,一次性创建的空闲线程数量。Tomcat初始化时创建的线程数量也由此值设置。
maxSpareThreads="50" 一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值50。一旦创建的线程超过此数值,Tomcat会关闭不再需要的线程。线程数可以大致上用 “同时在线人数*每秒用户操作次数*系统平均操作时间” 来计算。
maxIdleTime="60000" 在Tomcat关闭一个空闲线程之前,允许空闲线程持续的时间(以毫秒为单位)。只有当前活跃的线程数大于minSpareThread的值,才会关闭空闲线程。默认值:60000(一分钟)。
2、使用线程池
<Connector port="80" executor="tomcatThreadPool" redirectPort="8443" minProcessors="5" maxProcessors="50" connectionTimeout="20000"
compression="on" enableLookups="false" disableUploadTimeout="true" enableLookups="false" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" URIEncoding="UTF-8">
executor: 使用Executor定义的线程池
redirectPort:重定向的端口
minProcessors:服务器启动时创建的处理请求的线程数;
maxProcessors:最大可以创建的处理请求的线程数;
enableLookups:禁用DNS查询,就是不用解析客户端的DNS,如果需要就0设为true
URIEncoding="UTF-8":运行系统的编码
enableLookups="false":是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
disableUploadTimeout="true":上传文件超时时间
compression="on": 压缩建议不压缩,压缩会消耗时间
compressionMinSize="2048":最小的压缩的大小
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain":压缩的内容类型
3、实例
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" acceptCount="1000" minSpareThreads="50" maxSpareThreads="100" maxIdleTime="600000" />
<Connector port="80" executor="tomcatThreadPool" redirectPort="8443" minProcessors="5" maxProcessors="50" connectionTimeout="20000"
compression="on" disableUploadTimeout="true" enableLookups="false" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" URIEncoding="UTF-8" />