Tomcat性能调优

一.Tomcat内存优化



T omcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS 参数。

1.JAVA_OPTS参数说明





Java代码 
1.-server  启用jdk 的 server 版; 
2.-Xms    java虚拟机初始化时的最小内存; 
3.-Xmx   java虚拟机可使用的最大内存; 
4.-XX:PermSize    内存永久保留区域 
5.-XX:MaxPermSize   内存最大永久保留区域  

服务器参数配置




现公司服务器内存一般都可以加到最大2G ,所以可以采取以下配置:





Java代码 
1.JAVA_OPTS='-Xms1024m -Xmx2048m -XX:PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m' 




配置完成后可重启Tomcat ,通过以下命令进行查看配置是否生效:

1.  首先查看Tomcat 进程号:



Xml代码 
1.sudo lsof -i:9027 

 



我们可以看到Tomcat 进程号是 12222 。

1.  查看是否配置生效:



Xml代码 
1.sudo jmap  – heap 12222   

 

 

我们可以看到MaxHeapSize 等参数已经生效。、

二.Tomcat并发优化



1.Tomcat连接相关参数



在Tomcat 配置文件 server.xml 中的 <Connector ... /> 配置中



1.参数说明



minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为 10

maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为 75

acceptCount:允许的最大连接数,应大于等于 maxProcessors ,默认值为 100

enableLookups:是否反查域名,取值为: true 或 false 。为了提高处理能力,应设置为 false

connectionTimeout:网络连接超时,单位:毫秒。设置为 0 表示永不超时,这样设置有隐患的。通常可设置为 30000 毫秒。

其中和最大连接数相关的参数为maxProcessors 和 acceptCount 。如果要加大并发连接数,应同时加大这两个参数。

web server允许的最大连接数还受制于操作系统的内核参数设置,通常 Windows 是 2000 个左右, Linux 是 1000 个左右。



2.Tomcat中的配置示例






Xml代码 
1.<Connector port="9027"  
2. 
3.                protocol="HTTP/1.1" 
4. 
5.                maxHttpHeaderSize="8192" 
6. 
7.                minProcessors="100" 
8. 
9.                maxProcessors="1000" 
10. 
11.                acceptCount="1000" 
12. 
13.                redirectPort="8443" 
14. 
15.                disableUploadTimeout="true"/>  
  
2.调整连接器connector的并发处理能力





1.参数说明



maxThreads  客户请求最大线程数

minSpareThreads    Tomcat初始化时创建的 socket 线程数

maxSpareThreads   Tomcat连接器的最大空闲 socket 线程数

enableLookups      若设为true, 则支持域名解析,可把 ip 地址解析为主机名

redirectPort        在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口

acceptAccount       监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads  )

connectionTimeout   连接超时

minProcessors         服务器创建时的最小处理线程数

maxProcessors        服务器同时最大处理线程数

URIEncoding    URL统一编码





2.Tomcat中的配置示例







Xml代码 
1.<Connector port="9027"  
2. 
3.                protocol="HTTP/1.1" 
4. 
5.                maxHttpHeaderSize="8192" 
6. 
7.                maxThreads="1000" 
8. 
9.                minSpareThreads="100" 
10. 
11.                maxSpareThreads="1000" 
12. 
13.                minProcessors="100" 
14. 
15.                maxProcessors="1000" 
16. 
17.                enableLookups="false" 
18. 
19.                URIEncoding="utf-8" 
20. 
21.                acceptCount="1000" 
22. 
23.                redirectPort="8443" 
24. 
25.                disableUploadTimeout="true"/> 
  
3.Tomcat缓存优化





1.参数说明



c ompression 打开压缩功能   

compressionMinSize   启用压缩的输出内容大小,这里面默认为2KB

compressableMimeType 压缩类型

connectionTimeout 定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间



2.Tomcat中的配置示例



Xml代码 
1.<Connector port="9027"  
2. 
3.                protocol="HTTP/1.1" 
4. 
5.                maxHttpHeaderSize="8192" 
6. 
7.                maxThreads="1000" 
8. 
9.                minSpareThreads="100" 
10. 
11.                maxSpareThreads="1000" 
12. 
13.                minProcessors="100" 
14. 
15.                maxProcessors="1000" 
16. 
17.                enableLookups="false" 
18. 
19.                compression="on" 
20. 
21.                compressionMinSize="2048"                
22. 
23.                compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 
24. 
25.                connectionTimeout="20000" 
26. 
27.                URIEncoding="utf-8" 
28. 
29.                acceptCount="1000" 
30. 
31.                redirectPort="8443" 
32. 
33.                disableUploadTimeout="true"/> 
  
4.参考配置



1.旧有的配置



参考网络对服务器做过如下配置,拿出来分享下:





Xml代码 
1.<Connector port="9027"  
2. 
3.protocol="HTTP/1.1"  
4. 
5.                maxHttpHeaderSize="8192" 
6. 
7.                maxThreads="1000" 
8. 
9.                minSpareThreads="25" 
10. 
11.                maxSpareThreads="75" 
12. 
13.                enableLookups="false" 
14. 
15.                compression="on" 
16. 
17.                compressionMinSize="2048" 
18.          
19.                compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 
20. 
21.                connectionTimeout="20000" 
22. 
23.                URIEncoding="utf-8" 
24. 
25.                acceptCount="200" 
26. 
27.                redirectPort="8443" 
28. 
29.                disableUploadTimeout="true" /> 
  
后来发现在访问量达到3 百万多的时候出现性能瓶颈。

2.更改后的配置







Xml代码 
1.<Connector port="9027"  
2. 
3.                protocol="HTTP/1.1" 
4. 
5.                maxHttpHeaderSize="8192" 
6. 
7.                maxThreads="1000" 
8. 
9.                minSpareThreads="100" 
10. 
11.                maxSpareThreads="1000" 
12. 
13.                minProcessors="100" 
14. 
15.                maxProcessors="1000" 
16. 
17.                enableLookups="false" 
18. 
19.                compression="on" 
20. 
21.                compressionMinSize="2048" 
22. 
23.                compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 
24. 
25.                connectionTimeout="20000" 
26. 
27.                URIEncoding="utf-8" 
28. 
29.                acceptCount="1000" 
30. 
31.                redirectPort="8443" 
32. 
33.                disableUploadTimeout="true"/> 
  
性能有待观察中 ……

你可能感兴趣的:(tomcat)