日常会做一些tomcat运维工作,其中就包括了tomcat优化,由本地文件保存到线上,以后就不用找文档了。
内存优化:
linux修改catalina.sh,在#!/bin/sh后面加入:
JAVA_OPTS="-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError"
实际按照具体硬件配置优化。
线程优化:
修改conf/server.xml文件:
Connector port="8080" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700" enableLookups="false"
connectionTimeout="20000" redirectPort="8443"
maxThreads="600" 最大线程数
minSpareThreads="100" 初始化时创建的线程数
maxSpareThreads="500" 一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
acceptCount="700" 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
enableLookups="false" 禁用dns查询
设置session过期时间:
修改conf\web.xml文件:
session-timeout 设置会话超时时间
Tomcat可以使用Apache Portable Runtime来提供卓越的性能及可扩展性,更好地与本地服务器技术的集成
安装APR前的官方要求
APR 1.2+ development headers (libapr1-dev package)
OpenSSL 1.0.2+ development headers (libssl-dev package)
JNI headers from Java compatible JDK 1.4+
GNU development environment (gcc, make)
安装相关依赖包
yum -y install gcc gcc-c++ libtool* autoconf automake expat-devel perl perl-devel
APR库相关包可以在这里下载 http://archive.apache.org/dist/apr/?C=S;O=A
下载安装包
[root@APR ~]# mkdir /software
[root@APR ~]# cd /software/
[root@APR software]# wget http://mirror.rise.ph/apache//apr/apr-1.6.5.tar.gz
[root@APR software]# wget http://mirror.rise.ph/apache//apr/apr-iconv-1.2.2.tar.gz
[root@APR software]# wget http://mirror.rise.ph/apache//apr/apr-util-1.6.1.tar.gz
[root@APR software]# wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz
友情提示:apr、apr-iconv、apr-util都是截止到2019年1月22日的最新版本,openssl是最新的稳定版,openssl的官网原文翻译如下:
最新的稳定版本是1.1.1系列。这也是我们的长期支持(LTS)版本,支持到2023年9月11日。我们之前的LTS版本(1.0.2系列)将继续得到支持,直到2019年12月31日(安全修复仅在支持的最后一年)。1.1.0系列目前仅接收安全修复程序,并将于2019年9月11日停止支持。鼓励1.0.2和1.1.0的所有用户尽快升级到1.1.1。0.9.8,1.0.0和1.0.1版本现在不受支持,不应使用。
因此,建议使用1.1.1版本,不要再使用其他版本!!!
安装APR
[root@APR software]# tar zxf apr-1.6.5.tar.gz
[root@APR software]# cd apr-1.6.5/
[root@APR apr-1.6.5]# vim configure
默认值:
在第30392行 RM='$RM'
修改为:
在第30392行 RM='$RM -f'
[root@APR apr-1.6.5]# ./configure --prefix=/usr/local/apr && make && make install
安装apr-iconv
[root@APR apr-1.6.5]# cd ..
[root@APR software]# tar zxf apr-iconv-1.2.2.tar.gz
[root@APR software]# cd apr-iconv-1.2.2/
[root@APR apr-iconv-1.2.2]# ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr && make && make install
安装apr-util
[root@APR apr-iconv-1.2.2]# cd ..
[root@APR software]# tar zxf apr-util-1.6.1.tar.gz
[root@APR software]# cd apr-util-1.6.1/
[root@APR apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv && make && make install
安装OpenSSL
[root@APR apr-util-1.6.1]# cd ..
[root@APR software]# tar zxf openssl-1.1.1.tar.gz
[root@APR software]# cd openssl-1.1.1/
[root@APR openssl-1.1.1]# ./config --prefix=/usr/local/openssl && make -j $(grep processor /proc/cpuinfo | wc -l) && make install
安装tomcat-native:
[root@APR openssl-1.1.1]# cd /usr/local/tomcat/bin/
[root@APR bin]# tar zxf tomcat-native.tar.gz
[root@APR bin]# cd tomcat-native-1.2.18-src/native/
[root@APR native]# ./configure --with-ssl=/usr/local/openssl --with-apr=/usr/local/apr --with-java-home=/usr/local/java && make && make install
友情提示1:博主这里的jdk安装路径在/usr/local/java,是自定义环境,读者切莫直接粘贴,要改成你实际的jdk路径。
友情提示2:注意:如果以上 configure 失败,可以执行 make distclean 清除。
添加环境变量
$ vi /etc/profile #在最后增加环境变量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib$ source /etc/profile
$ cd /opt/tomcat/bin
$ vi setenv.sh #新增一个环境变量设置脚本
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib
export LD_LIBRARY_PATH
到此为止APR就安装完成了,下面我们使用APR模式
修改tomcat配置文件,使用APR运行模式,并测试是否安装成功
[root@APR native]# vim /usr/local/tomcat/conf/server.xml //请按你实际tomcat安装路径为准
默认值:
connectionTimeout="20000"
redirectPort="8443" />修改为:
connectionTimeout="20000"
redirectPort="8443" />
启动tomcat查看日志:
26-Jun-2021 23:53:55.480 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat8/webapps/ROOT]
26-Jun-2021 23:53:56.367 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat8/webapps/ROOT]的部署已在[860]毫秒内完成
26-Jun-2021 23:53:56.368 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat8/webapps/docs]
26-Jun-2021 23:53:56.441 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat8/webapps/docs]的部署已在[73]毫秒内完成
26-Jun-2021 23:53:56.441 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat8/webapps/examples]
26-Jun-2021 23:53:56.936 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat8/webapps/examples]的部署已在[494]毫秒内完成
26-Jun-2021 23:53:56.936 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat8/webapps/host-manager]
26-Jun-2021 23:53:57.002 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat8/webapps/host-manager]的部署已在[66]毫秒内完成
26-Jun-2021 23:53:57.003 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat8/webapps/manager]
26-Jun-2021 23:53:57.046 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat8/webapps/manager]的部署已在[43]毫秒内完成
26-Jun-2021 23:53:57.066 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-apr-8080"]
26-Jun-2021 23:53:57.103 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in 1792 ms友情提示:查看日志看到“http-apr-8080”和“ajp-apr-8009”字样就是APR模式运行成功。
参考资源:
https://blog.youkuaiyun.com/u010195563/article/details/80966025