在生产环境下,通常需要对Tomcat的一些参数进行设置以达到优化性能的目的。Tomcat运行于虚拟机JVM之上,因此对JVM的优化必不可少,另外机器的硬件、软件环境对服务器的运行效率至关重要。抛去其他因素不谈,下面仅介绍对Tomcat的有关参数进行优化设置。
【基本参数设置】
修改Tomcat的/conf目录下面的server.xml文件,针对端口为8080的连接器添加如下参数:
1. connectionTimeout:连接失效时间,单位为毫秒、默认为60s、这里设置为30s,如果用户请求在30s内未能进入请求队列,视为本次连接失败。
2. keepAliveTimeout:连接的存活时间,默认和connectionTimeout一致,这里可以设为15s、这意味着15s之后本次连接关闭. 如果页面需要加载大量图片、js等静态资源,需要将参数适当调大一点、以免多次创建TCP连接。
3. enableLookups:是否对连接到服务器的远程机器查询其DNS主机名,一般情况下这并不必要,因此设为false即可。
4. URIEncoding:设置URL参数的编码格式为UTF-8编码,默认为ISO-8859-1编码。
5. maxHttpHeaderSize:设置HTTP请求、响应的头部内容大小,默认为8192字节(8k),此处设置为32768字节(32k)、和Nginx的设置保持一致。
6. maxThreads:最大线程数、用于处理用户请求的线程数目,默认为200、此处设置为300
7. acceptCount:用户请求等候队列的大小,默认为100、此处设置为200
Linux系统默认一个进程能够创建的最大线程数为1024、因此对高并发应用需要进行Linux内核调优,至此文件server.xml修改后的内容如下所示:
<Connector port="8080" protocol="HTTP/1.1" redirectPort="8443" connectionTimeout="30000" keepAliveTimeout="15000" enableLookups="false" URIEncoding="UTF-8" maxHttpHeaderSize="32768" maxThreads="300" acceptCount="200" />
【线程池技术】
默认情况下,Tomcat针对每个用户请求都单独创建一个线程,用户请求处理完成后又将线程立即销毁掉,在并发访问量很高的情况下,线程的创建和销毁会带来比较大的系统开销。因此有必要使用Tomcat提供的线程池功能,下面是设置Tomcat线程池的示例:
1. 修改连接器的设置:指定executor的name为线程池的名字、同时去掉最大线程数maxThreads的设置。
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" redirectPort="8443" connectionTimeout="30000" keepAliveTimeout="15000" enableLookups="false" URIEncoding="UTF-8" maxHttpHeaderSize="32768" acceptCount="200" />
2. 线程池参数的设置:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="300" minSpareThreads="50" maxIdleTime = "15000" />
说明:
1. 通过namePrefix属性指定用户线程的命名前缀为“catalina-exec-”。
2. maxThreads为最大线程数,minSpareThreads为最小空闲线程数,maxIdleTime为最大空闲时间、单位为毫秒。
【使用Tomcat管理平台】
修改Tomcat的conf目录下面的tomcat-users.xml文件,添加如下内容:
<user username="nick" password="123456" roles="manager"/>
启动Tomcat之后,通过http://localhost:8080访问欢迎页,点击左侧的Tomcat Manager链接,输入上面设置的账号后,在打开的页面点击Server Status链接进入Tomcat监控页面,可以查看到JVM、Tomcat的一些环境信息,以及当前的用户线程数:
上面这些,只是Tomcat性能优化的入门知识,就像之前说的,Tomcat依赖于JVM虚拟机,对JVM的参数优化和性能监控才是重中之重,当然也更为复杂!
===============================
稍后继续!
相关推荐
tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-...
开发工具 apache-tomcat-8.0.41-windows-x86开发工具 apache-tomcat-8.0.41-windows-x86开发工具 apache-tomcat-8.0.41-windows-x86开发工具 apache-tomcat-8.0.41-windows-x86开发工具 apache-tomcat-8.0.41-...
tomcat-juli.jar和tomcat-juli-adapters.jar tomcat-juli.jar和tomcat-juli-adapters.jar
文件名写错了,此压缩文件支持tomcat8.5。是否支持8.0请自行测试,本人只测试了8.5,可以使用。压缩文件包括tomcat-redis-session-manager-...apache-tomcat-8.5.33.tar.gz,nginx-1.6.2.tar.gz也打包进去,一步到位。
apache-tomcat-6.0.53-src,apache tomcat 6.0.53的源码。 压缩包文件清单: apache-tomcat-6.0.53-src.tar.gz apache-tomcat-6.0.53-src.tar.gz.asc apache-tomcat-6.0.53-src.tar.gz.md5 apache-tomcat-6.0.53-...
Tomcat8亲测可用 tomcat-redis-session-manager的jar包 修改了tomcat-redis-session-manager源码进行的编译生成的jar包
tomcat-embed-core-8.5.23.jar
用于配置 tomcat-redis-session-manager
tomcat-redis-session-manager-2.0.0.jar
使用tomcat-redis-session-manager进行统一session管理所需jar包,包括tomcat6-jdk6、tomcat7-jdk7、tomcat8-jdk8
tomcat-embed-el-9.0.16.jar
所需的tomcat-redis-session-manager所有的jar包下载。测试环境JDK1.8,Tomact8
tomcat9负载均衡tomcat-cluster-redis-session-manager_4.0
因tomcat7使用redis共享session,其他的包存在问题,自己编译后处理通过。 该包是在https://github.com/jcoleman/tomcat-redis-session-manager 将源码编译后的包。
apache-tomcat-8.5.31-windows-x86 32位,tomcat-8 32位
包括commons-pool-1.6.jar,jedis-2.0.0.jar,tomcat-redis-session-manager-1.2-tomcat-6&7.jar
tomcat-redis-session-manager-1.2.jar redis+tomcat session共享需要的jar包,包括tomcat6和tomcat7