最近由于项目应用出现性能问题,所以对应用容器tomcat进行了参数优化。
tomcat版本8.0.23
首先,配置nginx 到tomcat的长连接
nginx:
upstream tomcat_server{ server xx.xx.xx.xx:8080 keepalive 400; } .............. location /XXXXX { proxy_pass http://tomcat_server/XXXXX/; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Cookie $http_cookie; proxy_http_version 1.1; proxy_set_header Connection ""; }
tomcat:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="15000" maxThreads="600" acceptCount="100" executor="tomcatThreadPool" acceptorThreadCount="4" keepAliveTimeout="-1" maxKeepAliveRequests="-1" maxPostSize="0" enableLookups="flase" redirectPort="8443" />
然后,增加连接池配置
tomcat:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="600" minSpareThreads="200" prestartminSpareThreads="true" maxQueueSize="100"/> <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="10000" acceptCount="100" executor="tomcatThreadPool" acceptorThreadCount="4" keepAliveTimeout="-1" maxKeepAliveRequests="-1" maxPostSize="0" enableLookups="flase" redirectPort="8443" />
这里的协议还可以用nio2
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
最后,还安装了apr
apr的安装步骤:
redhat6.1
1)更换yum源 wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
把CentOS6-Base-163.repo里的$releasever改为6
2)执行下列命令
yum clean all
yum makecache
yum install apr-devel
yum install openssl-devel
yum install gcc
yum install make
cd /opt/tomcat/apache-tomcat-8.0.23/bin/tomcat-native-1.1.33-src/jni/native
./configure --with-apr=/usr/bin/apr-1-config
make
make install
3) 配置环境变量
在/etc/profile中添加
export LD_LIBRARY_PATH = /usr/local/apr/lib
export LD_RUN_PATH=/usr/local/apr/lib
ubuntu16.04
1) 更新一下载源
apt-get clean
apt-get update
apt-get upgrade
2) apt-get install libapr1 libapr1-dev libaprutil1-dev
3) 配置环境变量
在~/.bashrc中添加
export LD_LIBRARY_PATH = /usr/local/apr/lib
export LD_RUN_PATH=/usr/local/apr/lib
开启apr的tomcat配置
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" connectionTimeout="10000" acceptCount="100" executor="tomcatThreadPool" keepAliveTimeout="-1" maxKeepAliveRequests="-1" maxPostSize="0" enableLookups="flase" redirectPort="8443" />