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

时间:2022-06-01 17:57:35

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