1.优化Tomcat的JVM环境
vim /usr/local/apache-tomcat-9.0.16/bin/catalina.sh
#在该注释后加入如下代码
# OS specific support. $var _must_ be set to either true or false.
export JAVA_OPTS="-server -Xms512M -Xmx512M -Xss512k -XX:PermSize=128M
-XX:MaxPermSize=256M -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=8 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true"
#-server 开启tomcat的服务器模式
#-Xms 最小堆内存(JVM发现内存使用率达到最小内存的阀值时,会增加堆内存,直到最大内存为止,如果超出,则OutOfMemory Heap的错误 )
#-Xmx 最大堆内存(JVM发现内存使用率低于最大内存的阀值时,会减少内存,直到最低内存位置。 为了防止JVM的这种申请或释放堆内存的机制,强烈建议将最小堆内存和最大堆内存设置成一样)
#-AggressiveOpts 自动将新版本的优化配置生效
#-XX:PermSize 永久代内存
#-XX:MaxPermSize=256M 最大永久代内存
2.优化Tomcat线程池
vim /usr/local/apache-tomcat-9.0.16/conf/server.xml
#修改内容如下
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="9000" protocol="HTTP/1.1"
URIEncoding="UTF-8"
maxHttpHeaderSize="8192"
maxThreads="1200"
enableLookups="false"
acceptCount="200"
connectionTimeout="20000"
disableUploadTimeout="true"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
3.开启Tomcat的apr模式
#安装apr和gcc
yum -y install apr apr-devel
yum -y install gcc
#安装tomcat的native安装包
cd /usr/local/apache-tomcat-9.0.21/bin/
tar xzfv tomcat-native.tar.gz
cd tomcat-native-1.2.21-src/native/
./configure --with-apr=/usr/bin/apr-1-config
make
make install
#整合Tomcat的apr到环境上变量中
vim /etc/profile
#在文件中加入下面这句话
export CATALINA_OPTS=-Djava.library.path=/usr/local/apr/lib
#使配置生效
source /etc/profile
#修改tomcat的server.xml配置文件
vim tomcat/conf/server.xml
#将配置中的
Connector port="8080" protocol="HTTP/1.1"
改成
Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
将配置中的
Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
改成
Connector port="8009" protocol="org.apache.coyote.ajp.AjpAprProtocol" redirectPort="8443"
重启tomcat, 启动日志出现以下内容表示APR模式成功开启
INFO: Initializing ProtocolHandler [“http-apr-8080”]
INFO: Initializing ProtocolHandler [“apj-apr-8009”]