vlambda博客
学习文章列表

(转)如何优化tomcat配置优化

一.Tomcat内存优化


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

  JAVA_OPTS参数说明

  -server 启用jdk 的 server 版;

  -Xms java虚拟机初始化时的最小内存;

  -Xmx java虚拟机可使用的最大内存;

  -XX: PermSize 内存永久保留区域

  -XX:MaxPermSize 内存最大永久保留区域

  服务器参数配置


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


  JAVA_OPTS=’-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m’


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

  首先查看Tomcat 进程号:


  sudo lsof -i:9027


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

  查看是否配置生效:


  sudo jmap – heap 12222


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


二.Tomcat并发优化


  1.Tomcat连接相关参数


  在Tomcat 配置文件 server.xml 中的


1  <Connector port="9027"

2  protocol="HTTP/1.1"

3  maxHttpHeaderSize="8192"

4  minProcessors="100"

5  maxProcessors="1000"

6  acceptCount="1000"

7  redirectPort="8443"

8  disableUploadTimeout="true"/>



  2.调整连接器connector的并发处理能力


  1>参数说明


  maxThreads 客户请求最大线程数

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

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

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

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

  connectionTimeout 连接超时

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

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

  URIEncoding URL统一编码


  2>Tomcat中的配置示例


1   <Connector port="9027"

2   protocol="HTTP/1.1"

3   maxHttpHeaderSize="8192"

4   maxThreads="1000"

5   minSpareThreads="100"

6   maxSpareThreads="1000"

7   minProcessors="100"

8   maxProcessors="1000"

9   enableLookups="false"

10  URIEncoding="utf-8"

11  acceptCount="1000"

12  redirectPort="8443"

13  disableUploadTimeout="true"/>



  3.Tomcat缓存优化


  1>参数说明


  c ompression 打开压缩功能

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

  compressableMimeType 压缩类型

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


  2>Tomcat中的配置示例


1   <Connector port="9027"

2   protocol="HTTP/1.1"

3   maxHttpHeaderSize="8192"

4   maxThreads="1000"

5   minSpareThreads="100"

6   maxSpareThreads="1000"

7   minProcessors="100"

8   maxProcessors="1000"

9   enableLookups="false"

10  compression="on"

11  compressionMinSize="2048"

12 compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

13  connectionTimeout="20000"

14  URIEncoding="utf-8"

15  acceptCount="1000"

16  redirectPort="8443"

17  disableUploadTimeout="true"/>



  4.参考配置


  1>旧有的配置


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


1   <Connector port="9027"

2   protocol="HTTP/1.1"

3   maxHttpHeaderSize="8192"

4   maxThreads="1000"

5   minSpareThreads="25"

6   maxSpareThreads="75"

7   enableLookups="false"

8   compression="on"

9   compressionMinSize="2048"

10  compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

11  connectionTimeout="20000"

12  URIEncoding="utf-8"

13  acceptCount="200"

14  redirectPort="8443"

15  disableUploadTimeout="true" />



  后来发现在访问量达到3 百万多的时候出现性能瓶颈。

  2>更改后的配置


1   <Connector port="9027"

2   protocol="HTTP/1.1"

3   maxHttpHeaderSize="8192"

4   maxThreads="1000"

5   minSpareThreads="100"

6   maxSpareThreads="1000"

7   minProcessors="100"

8   maxProcessors="1000"

9   enableLookups="false"

10  compression="on"

11  compressionMinSize="2048"

12  compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

13  connectionTimeout="20000"

14  URIEncoding="utf-8"

15  acceptCount="1000"

16  redirectPort="8443"

17  disableUploadTimeout="true"/>

————————————————

版权声明:本文为CSDN博主「软件开发那些事儿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/centre10/java/article/details/50639693