在CentOS中,Tomcat启动慢可能是由于多种原因造成的,包括硬件资源不足、系统配置不当、Tomcat自身参数设置不合理等。以下是一些常见的加速方法:
java.security
文件:编辑 JAVA_HOME/jre/lib/security/java.security
文件,将 securerandom.sourcefile
从 /dev/random
改为 /dev/urandom
,以加快随机数生成速度。JAVA_OPTS
环境变量:在 TOMCAT_HOME/bin/catalina.sh
文件中设置 JAVA_OPTS
环境变量,添加如下参数:JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/urandom"
这将使用 /dev/urandom
来生成随机数,提高启动速度。rng-tools
:安装 rng-tools
服务以增加熵池,从而加快随机数生成。yum install rng-tools
systemctl start rngd
systemctl enable rngd
conf/server.xml
文件中,调整 Connector
元素的 maxThreads
、minSpareThreads
和 acceptCount
参数,以更好地利用服务器资源。<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="200" minSpareThreads="50" acceptCount="100" />
Connector
元素中添加 compression="on"
属性,以减少网络传输中的数据量。<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" compression="on" />
org.apache.coyote.http11.Http11NioProtocol
,以提高网络I/O性能。<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" />
/etc/security/limits.conf
文件,增加文件描述符的限制。* soft nofile 65536
* hard nofile 65536
/etc/sysctl.conf
文件,优化网络缓冲区大小和文件描述符限制等参数。net.core.somaxconn=65535
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
fs.file-max=65536
/etc/rc.local
文件,添加以下命令以禁用透明大页。echo never /sys/kernel/mm/transparent_hugepage/enabled
echo never /sys/kernel/mm/transparent_hugepage/defrag
<Host name="localhost" appBase="webapps" unpackWARs="true" autodeploy="false" deployOnStartup="false" />
在进行任何优化操作之前,建议先在测试环境中验证优化效果,并备份重要数据以防万一。