- 内存优化
- 并发优化
- 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 需要三个 软件包 :
- APR 1.6.3
- APR-util 1.6.1
- APR-iconv 1.2.2
- 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 基本优化就差不多了。