Tomcat

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Tomcat > tomcat优化配置

tomcat优化配置小结

作者:鲍飞大剑

本文主要介绍了tomcat优化配置小结,介绍了十一个方面的优化问题,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1修改Tomcat的内存配置,打开$TOMCAT_HOME/bin/catalina.sh文件

内存优化:

1)错误提示:java.lang.OutOfMemoryError:Java heap space

set JAVA_OPTS=-Xms512m-Xmx512m

2)错误提示:java.lang.OutOfMemoryError: PermGenspace

setJAVA_OPTS=-XX:PermSize=128M

2 连接数优化,主要是在conf/server.xml配置文件中进行修改。

2.1、优化线程数

增加maxThreads和acceptCount属性(使acceptCount大于等于maxThreads)

2.2、使用线程池

在server.xml中增加executor节点,然后配置connector的executor属性

当tomcat并发用户量大的时候,单个jvm进程确实可能打开过多的文件句柄,这时会报java.net.SocketException:Too many open files错误。可使用下面步骤检查:

ps -ef |grep tomcat 查看tomcat的进程ID,记录ID号,假设进程ID为10001

lsof -p 10001|wc -l 查看当前进程id为10001的 文件操作数

使用命令:ulimit -a 查看每个用户允许打开的最大文件数

3 tomcat connector三种运行模式(BIO,NIO,APR)

3.1、三种模式比较

1)BIO:一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下在Linux系统中默认使用这种方式

2)NIO:利用Java的异步IO处理,可以通过少量的线程处理大量的请求。Tomcat8在Linux系统中默认使用这种方式。Tomcat7必须修改Connector配置来启动(conf/server.xml配置文件):

<Connectorport="8080"protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000"redirectPort="8443"/>

3)APR(Apache Portable Runtime):从操作系统层面解决io阻塞问题。Linux如果安装了apr和native,Tomcat直接启动就支持apr。

3.2、apr模式

安装apr以及tomcat-native

yum -y install

make && make install

安装成功后还需要对tomcat设置环境变量,方法是在catalina.sh文件中增加1行

  修改8080端对应的conf/server.xml

4 并发配置优化

Tomcat的并发请求处理数量=maxThreads + acceptCount

enableLookups:如果为true,调用request.getRemoteHost会执行DNS反查,反向解析IP对应的域名或主机,效率较低,建议设为false。

5 tomcat配置优化

6  执行器优化(线程池)

Executor重要参数说明:

Connector重要参数说明:

7 禁用AJP连接器

我们一般是使用Nginx+tomcat的架构,所以用不着AJP协议,所以把AJP连接器禁用

8 配置优化

8.1 Connector 优化

<Connector port="8080"   
          protocol="HTTP/1.1"   
          maxThreads="1000"   
          minSpareThreads="100"   
          acceptCount="1000"  
          maxConnections="1000"  
          connectionTimeout="20000"   
          maxHttpHeaderSize="8192"  
          tcpNoDelay="true"  
          compression="on"  
          compressionMinSize="2048"  
          disableUploadTimeout="true"  
          redirectPort="8443"  
      enableLookups="false"  
          URIEncoding="UTF-8" />

8.2 线程池 

Executor代表了一个线程池,可以在Tomcat组件之间共享。使用线程池的好处在于减少了创建销毁线程的相关消耗,而且可以提高线程的使用效率。

<Executor name="tomcatThreadPool"   
         namePrefix="catalina-exec-"   
         maxThreads="1000"   
         minSpareThreads="100"  
         maxIdleTime="60000"  
         maxQueueSize="Integer.MAX_VALUE"  
         prestartminSpareThreads="false"  
         threadPriority="5"  
         className="org.apache.catalina.core.StandardThreadExecutor"/>

8.3 Listener 

Server标签中可以配置多个Listener,其中 JreMemoryLeakPreventionListener是用来预防JRE内存泄漏。此Listener只需在Server标签中配置即可,默认情况下无需配置,已经添加在 Server中。

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />  

9 设置Tomcat的编码

10 设置Tomcat的热部署

docBase:项目所在路径,可以使用绝对路径或相对路径,相对路径是相对于webapps ;

path:访问项目的路径;

reloadable:是否自动加载新增或改变的class文件;

11 修改Tomcat命令窗口的名字

在运行多个tomcat窗口的时候,可以通过修改tomcat命令窗口的名字来区分不同的tomcat;

到此这篇关于tomcat优化配置小结的文章就介绍到这了,更多相关tomcat优化配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文