Tomcat 8.5新安装环境初步配置优化

下载安装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,根据服务情况去调整,增加并发。