tomcat性能优化参数

线上环境使用默认tomcat配置文件,性能很一般,为了满足大量用户的访问,需要对tomcat进行参数性能优化,具体优化的地方如下:

  • Linux内核的优化
  • 服务器资源JVM 配置的优化
  • Tomcat参数优化
  • Tomcat配置连接器
  • 配置负载集群优化

这里着重讲解tomcat参数的优化:server.xml文件,关闭DNS查询、配置最大并发等参数。

maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200

acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100

当然这些值都不是越大越好,需要根据实际情况来设定。可以基于测试的基础上来不断的调优分析。

1,vim  /usr/local/tomcat/conf/server.xml   优化http 8080访问端口段加入以下优化,再把默认的删掉

真实企业也是一下的参数 不变

<Connector port="8080"   

        protocol="org.apache.coyote.http11.Http11NioProtocol"  

           connectionTimeout="20000"  

           redirectPort="8443"   

           maxThreads="5000"   

           minSpareThreads="20"  

           acceptCount="1000"

           disableUploadTimeout="true"

           enableLookups="false"    

          URIEncoding="UTF-8" />

 

2,Catalina.sh JVM 参数优化java系统内存优化 ,根据自己虚拟机得内存来优化一下Xms

 Xmx   Xmn的参数 这里配置的内存不要太大一般位置系统内存的3/1  真实企业系统内存最低要留2个G    其中Xmn为Xmx内存的4/1  

如果不配置优化jvm   tomcat默认是502

参数添加位置 如下: 其中参数一般有开发人员来配置算出最优值

 

添加如下内容vim  /usr/local/tomcat/bin/ catalina.sh

CATALINA_OPTS="$CATALINA_OPTS –Xms1024M –Xmx1024M –Xmn512M -XX:SurvivorRatio=4 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=82 -DLOCALE=UTF-16LE  -DRAMDISK=/ -DUSE_RAM_DISK=ture -DRAM_DISK=true

3,优化server.conf配置文件

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" //最大并发数,默认设置 200,一般建议在 500 ~ 800,根据硬件设施和业务来判断

minSpareThreads="100" //Tomcat 初始化时创建的线程数,默认设置 25

prestartminSpareThreads = "true"//在 Tomcat 初始化的时候就初始化 minSpareThreads 的参数值,如果不等于 true,minSpareThreads 的值就无效

maxQueueSize = "100"//最大的等待队列数,超过则拒绝请求 />

<Connector executor="tomcatThreadPool" port="8080"

protocol="org.apache.coyote.http11.Http11Nio2Protocol" //Tomcat 8 设置 nio2 更好,Tomcat 6 、7设置nio更好:org.apache.coyote.http11.Http11NioProtocol

connectionTimeout="20000"

minSpareThreads="100" maxSpareThreads="1000"最大处理连接数线程

minProcessors="100“同时处理请求的最小数

maxProcessors=“1000”同时处理请求的最大数

maxConnections="1000" redirectPort="8443"

enableLookups="false" //禁用DNS查询 acceptCount="100" //指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认设置 100

maxPostSize="10485760" //以 FORM URL 参数方式的 POST 提交方式,限制提交最大的大小,默认是2097152(2兆),它使用的单位是字节。10485760 为 10M。如果要禁用限制,则可以设置为 -1。

compression="on" disableUploadTimeout="true" compressionMinSize="2048"

acceptorThreadCount="2" //用于接收连接的线程的数量,默认值是1。一般这个指需要改动的时候是因为该服务器是一个多核CPU,如果是多核CPU一般配置为 2.

compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/ja

vascript" URIEncoding="utf-8" keepAliveTimeout="0"

关闭shutdown端口:<Server port="-1" shutdown="SHUTDOWN">

关闭ajp连接:注释<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

取消访问日志Valve阀门

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

prefix="localhost_access_log." suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" />

/>

4,tomcat配置连接器

Tomcat Connector(Tomcat连接器)有bio、nio、apr三种运行模式
bio(blocking I/O,阻塞式I/O操作),表示Tomcat使用的是传统的Java I/O操作(即Java.io包及其子包)。 一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下,在Linux系统中默认使用这种方式。默认的模式,性能最差,没有经过任何优化处理和支持。
=============================================================================
nio(non-blocking I/O),java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Javanio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API。拥有比传统I/O操作(bio)更好的并发运行性能。利用Java的异步IO处理,可以通过少量的线程处理大量的请求。Tomcat8在Linux系统中默认使用这种方式。
#查看日志默认 tail -10 catalina.out
18-Jun-2019 05:30:31.727 INFO [main] org.apache.coyote.AbstractProtocol.start StartingProtocolHandler ["http-nio-8080"]
=============================================================================
apr(apache Portable Runtime/Nginx可移植运行时库),Tomcat将以JNI的形式调用apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。从操作系统级别来解决异步的IO问题,大幅度的提高性能。Tomcat apr也是在Tomcat上运行高并发应用的首选模式。

#修改默认模式为apr模式,Apr 效率最高
要让Tomcat以apr模式来运行,必须安装apr和native
安装apr:
yum -y install apr apr-devel gcc-c++
安装native:
cd /usr/local/tomcat/bin/
wget -c http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-connectors/native/1.2.21/source/tomcat-native-1.2.21-src.tar.gz
tar xzfv tomcat-native-1.2.21-src.tar.gz
cd /usr/local/tomcat/bin/tomcat-native-1.2.21-src/native
./configure --with-apr=/usr/bin/apr-1-config

#编译之前需要提前部署java 环境
make && make install
整合Tomcat apr:
设置环境变量
方法:在/etc/profile中加入:
export CATALINA_OPTS=-Djava.library.path=/usr/local/apr/lib
source /etc/profile
修改配置文件:vim tomcat/conf/server.xml
修改以下内容:
修改protocol的值为org.apache.coyote.http11.Http11NioProtocol
<Connector port=“8080” protocol=“org.apache.coyote.http11.Http11AprProtocol”
connectionTimeout=“20000”
redirectPort=“8443” />

#查看日志默认 tail -10 catalina.out
18-Jun-2019 05:57:04.550 INFO [main] org.apache.coyote.AbstractProtocol.start Starting
ProtocolHandler ["http-apr-8080"]

5,配置多个tomcat实例,方法也很简单,只需要在服务器上cp多个tomcat,然后修改三个端口和发布目录即可,然后分别启动即可。

为了提升整个网站的性能,还需要在tomcat前面架设nginx web反向代理服务器,用以提高用户高速访问。

原文地址:https://www.cnblogs.com/zhangan/p/10881550.html