下载安装Tomcat
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.37.tar.gz
tar zxf apache-tomcat-8.5.37.tar.gz -C /usr/local
mv /usr/local/apache-tomcat-8.5.37 /usr/local/tomcat
tomcat是一个压缩包,下载完成后,只需要解压到安装目录即可。
环境配置优化
安装tomcat后,我们需要对tomcat做初始配置及优化。主要考虑以下几点:
- 安全
- 把webapps下除ROOT外的目录全部删除,Tomcat有一个用户管理页面就存在这个目录下面基本用不上放着并不安全。
- 模式
- tomcat有三种运行模式nio bio apr,默认为bio 我们来调整为apr模式。
- 调整熵池
- 提高熵池可以加快启动速度,有时你会发现启动时好久卡在session这块就是熵池太小的原因。
- Jvm
- 分配tomcat运行占用内存。
- server.xml
- 这部分将调整tomcat的配置文件中的线程以及线程池和压缩等参数。
开启apr模式
yum -y install apr-devel openssl-devel
进入你tomcat安装目录
cd /usr/local/tomcat/bin
tar zxf tomcat-native-1.2.16.tar.gz
cd tomcat-native-1.2.16-src/native
./configure && make && make install
修改server.xml配置
定义端口这里HTTP1.1修改成org.apache.coyote.http11.Http11AprProtocol
catalina.sh脚本中
CLASSPATH=下加入
JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib"
重启tomcat可看到http-apr-8080
加大熵池
可以查看我们系统默认的
cat /proc/sys/kernel/random/entropy_avail
安装熵服务并启动
yum install rng-tools
systemctl start rngd
cp /usr/lib//system/rngd.service /etc//system
vim /etc/systemd/system/rngd.service 编辑熵服务
ExecStart=/sbin/rngd -f -r /dev/urandom 对照更改
systemctl daemon-reload
systemctl restart rngd
这样你在查看熵大小会很惊讶的
JVM调整
修改catalina.sh,在CLASSPATH=下加入
JAVA_OPTS="-server -Xms5000m -Xmx5000m -Xmn512m -XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:../logs/gc.log"
- Xms 初始化最小内存
- Xmx 可使用最大内存
- Xms和Xmx调整为相同减少内存频繁上下切换稳定些
- Xmn 年轻代内存
- -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:../logs/gc.log 输出gc日志方便查找问题
- -XX:+UseG1GC 开启G1垃圾回收
server.xml调整
<Executor
name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="600"
minSpareThreads="30"
prestartminSpareThreads="true"
maxIdleTime="60000"
/>
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11AprProtocol"
executor="tomcatThreadPool"
enableLookups="false"
URIEncoding="UTF-8"
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla,traviata"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
connectionTimeout="20000"
maxPostSize="-1"
maxHttpHeaderSize="8192"
acceptCount="600"
tcpNoDelay="true"
disableUploadTimeout="true"
redirectPort="8443" />
以上配置对应服务为 Centos7.2/4核16G,生产环境稳定运行
另一个还可以调整log日志的存储位置,防止日志过大妨碍服务运行
系统的Tcp连接数也应去修改,阿里云默认为2000,根据服务情况去调整,增加并发。