Tomcat 配置优化

969 阅读2分钟
  • 内存优化
  • 并发优化
  • apr 优化

进入 /usr/local/src 目录下,下载好如下程序包

Tomcat 8 下载地址点击进入

-rwxr-xr-x. 1 root root 9961067 10月 12 2017 apache-tomcat-8.5.20.zip
-rwxr-xr-x. 1 root root 1072661 12月 22 2017 apr-1.6.3.tar.gz
-rwxr-xr-x. 1 root root 1248250 12月 22 2017 apr-iconv-1.2.2.tar.gz
-rwxr-xr-x. 1 root root  554301 12月 22 2017 apr-util-1.6.1.tar.gz
-rwxr-xr-x. 1 root root  981093 10月 13 2017 nginx-1.12.1.tar.gz
-rwxr-xr-x. 1 root root 5309236 10月 11 2017 openssl-1.0.2k.tar.gz

在 src 目录下解压好 tomcat8 执行命令 unzip apache-tomcat-8.5.20.zip 移动至 local下
[root@server200 src]# mv apache-tomcat-8.5.20 /usr/local/tomcat8_8080

进入tomcat目录

[root@server200 tomcat8_8080]# pwd
/usr/local/tomcat8_8080
[root@server200 tomcat8_8080]#

开始优化Tomcat

优化内存

打开 catalina.sh ,找到 JAVA_OPTS [root@server200 tomcat8_8080]# vi ./bin/catalina.sh

在这行 JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS"下一行添加需要优化的内容,代码如下:

JAVA_OPTS="-server -Xms2048M -Xmx2048M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$CATALINA_HOME/logs/heap.dump"

-Xms 和-Xmx 都配置成了相同的 2G,这个具体看你的服务器内存,如果是练习使用的比较小,比如 1G 内存,如果这里配置成 2G 就会出问题。 HeapDumpOnOutOfMemoryError 这里表示如果出现OOM的时候,就将内存信息写入到 heap.dump .我们后续分析问题就在这里找原因。

并发优化

相关参数说明:

maxConnections: 意思是支持最大的并发连接数,tomcat 8 默认是 nio 10000 并发连接,apr 是8192 acceptCount 队列最大数,默认 100当连接数达到 maxConnections 最大了,之后的请求都放到队列里,acceptCount 是最大队列数, 这个调大没什么意义,默认即可。 maxThreads 请求处理线程的最大连接数,默认 200,取决于系统CPU。 minSpareThreads:最小空闲的工作线程

打开 [root@server200 tomcat8_8080]# vi ./conf/server.xml 找到 8080 端口,默认配置是:

< Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

优化配置后:

 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxConnections="300"
               acceptCount="200"
               maxThreads="300"
               minSpareThreads="200"
     />

禁用 AJP,在 server.xml 文件找到下面这一行,注释掉即可 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 实际生产中,还要根据实际情况来调节。

autoDeploy , 在 tomcat 运行过程中,检查是否有新的应用加入,默认是 true,线上环境设置为 false,否则影响性能 enableLookups:默认是 true,开启 dns 查询 reloadable:默认是 true,是否让 catalina 监控 WEB-INFO/calsses 和 WEB-INFO/lib 的变化,开发阶段还是好用的,线上就关闭该功能好了。

apr 优化

官网介绍 使用 apr 连接器,对网站并发有提高,主要是 tomcat-native 。一般对于并发高的网站 使用apr 也是一种方式 。 配置 apr 需要三个 软件包 :

  1. APR 1.6.3
  2. APR-util 1.6.1
  3. APR-iconv 1.2.2
  4. openssl-1.0.2

官网下载地址,点击进入 源码安装就三步,prefix 指定路劲,make,make install 解压 apr 1.6.3,并进入解压目录

/usr/local/src/apr-1.6.3

指定路劲 ./configure --prefix=/usr/local/apr 如果执行出现下面错误 ,就是有依赖没有安装,执行命令 安装依赖 yum install apr* openssl-devel gcc make yum install expat-devel

configure: error: in `/usr/local/src/apr-1.6.3':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
执行make, make install
[root@server200 apr-1.6.3]#make
[root@server200 apr-1.6.3]#make install

安装 apr-iconv-1.2.2

[root@server200 src]# tar -zxvf apr-iconv-1.2.2.tar.gz
[root@server200 src]# cd apr-iconv-1.2.2
[root@server200 apr-iconv-1.2.2]#
[root@server200 apr-iconv-1.2.2]# ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
[root@server200 apr-iconv-1.2.2]# make
[root@server200 apr-iconv-1.2.2]# make install

安装 apr-util-1.6.1

[root@server200 src]# tar -zxvf apr-util-1.6.1.tar.gz
[root@server200 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@server200 apr-util-1.6.1]# make
[root@server200 apr-util-1.6.1]# make install

安装 openssl

[root@server200 src]# tar -zxvf openssl-1.0.2k.tar.gz
[root@server200 openssl-1.0.2k]# ./config  --prefix=/usr/local/openssl
[root@server200 openssl-1.0.2k]# vi Makefile
将原来的:CFLAG=     -DOPENSSL_THREADS
修改为:  CFLAG= -fPIC -DOPENSSL_THREADS
也就是添加-fPIC
[root@server200 openssl-1.0.2k]# make

[root@server200 openssl-1.0.2k]# make install

如果提示 you need perl 5,进行下面 perl 依赖安装

wget http://www.cpan.org/src/5.0/perl-5.24.0.tar.gz
tar -xzf perl-5.24.0.tar.gz 
cd perl-5.24.0 
./Configure -des -Dprefix=$HOME/localperl 
make 
make test
make install

进入 tomcat bin 目录 解压 tomcat-native

[root@server200 bin]# tar -zxvf tomcat-native.tar.gz
[root@server200 native]# pwd
/usr/local/tomcat8_8080/bin/tomcat-native-1.2.12-src/native
[root@server200 native]#
[root@server200 native]# ./configure --with-apr=/usr/local/apr --with-ssl=/usr/local/openssl
[root@server200 native]# make
[root@server200 native]# make install

打开 conf/server.xml,修改 connector 的 protocol值 为 org.apache.coyote.http11.Http11AprProtocol

<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
               connectionTimeout="20000"
               redirectPort="8443"
               maxConnections="300"
               acceptCount="200"
               maxThreads="300"
               minSpareThreads="200"
     />

修改 SSLEngine = off

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />

保存退出 server.xml

修改 catalina.sh 注意:开启了apr之后,jvm用到的native内存会增大,因此要适当调大Metaspace空间,添加JVM选项:-XX:MetaspaceSize=128m

JAVA_OPTS="-server -Xms1024M -Xmx1024M -XX:MetaspaceSize=128M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$CATALINA_HOME/logs/heap.dump -Djava.library.path=/usr/local/apr/lib"

至此,tomcat 基本优化就差不多了。