Tomcat优化贼jb全
监控Tomcat状态
-
开发Java监控页面
mkdir /usr/local/tomcat8/webapps/meminfo vim /usr/local/tomcat8/webapps/meminfo/meminfo.jsp ...
-
使用jps命令
-
Tomcat远程监控功能
vim /usr/local/tomcat8/bin/catalina.sh CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 #开启端口 -Dcom.sun.management.jmxremote.authenticate=false #关闭 -Dcom.sun.management.jmxremote.ssl=false #关闭ssl -Djava.rmi.server.hostname=192.168.200.10" #调节自己端口 启动Tomcat,查看12345端口
在Windows上下载jbk环境。启动jconsole.exe软件会出现一个图像化的监控页面
Tomcat故障排查步骤
- 查看catalina.out
- 使用sh show-busy-java-thread.sh 脚本检测
https://files-cdn.cnblogs.com/files/clsn/show-busy-java-threads.sh
Tomcat安全优化
-
当Tomcat完成安装后你首先要做的事情如下:
首次安装完成后立即删除webapps下面的所有代码
rm -rf /srv/apache-tomcat/webapps/*
注释或删除 tomcat-users.xml 所有用户权限,看上去如下:cat conf/tomcat-users.xml <?xml version='1.0' encoding='utf-8'?> <tomcat-users> </tomcat-users>
-
隐藏tomcat版本
01.首先找到这个jar包,$TOMCAT_HOME/lib/catalina.jar
02.解压catalina.jar之后按照路径\org\apache\catalina\util\ServerInfo.properties找到文件
03.打开ServerInfo.properties文件修改如下:把server.number、server.built置空server.info=Apache Tomcat server.number= server.built=
04.重新打成jar包,重启tomcat。
-
管理端口号
修改./conf/server.xml
#修改8080端口=自带的web站点端口 <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true">/ #修改8009端口=外带Apache/nginx端口 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> #修改8005端口=监听停止端口 <Server port="8005" shutdown="SHUTDOWN">
-
禁用管理端:删除默认安装目录,以及webapps目录下的所有默认项目
-
降权启动:自己用户和组启动,
-
修改404等错误页面:./conf/web.xml,也可以重定向
-
访问日志格式:添加访问日志格式,方便更好的查看
Tomcat运行模式
-
bio:同步并阻塞:服务器模式实现一个连接一个线程。==最好的,适用于连接数目小且固定的架构,对服务器的资源要求较高,且多并发性一般。
-
nio:同步非阻塞:服务器模式请求一个请求一个线程,即,会将请求注册到多路复用器上,进行轮询启动线程处理。==速度一般,适用于连接数目多且连接比较少(轻操作)的架构,有更好的并发性。默认,也常用
-
aio(nio2):异步非阻塞:一个有效的请求一个线程,客户端的io请求都是由os请求完成后在通知服务器启动线程处理。==速度最快,最快的,性能最好
-
优化nio
vim /usr/local/tomcat8/conf/server.xml <Connector port="8080" protocol="HTTP/1.1" #将protocol修改为org.apache...进行优化 connectionTimeout="20000" redirectPort="8443" />
-
修改模式aip
rpm -e apr --nodeps #确认是否有 yum -y install apr apr-devel #下载 cd /usr/local/tomcat8/bin/ cp tomcat-native.tar.gz /root/ tar xf tomcat-native.tar.gz cd tomcat-native-1.2.12-src/ cd native/ ./configure --with-apr=/usr/bin/apr-1-config --with-java-home=/usr/local/java && make && make install vim /usr/local/tomcat8/bin/catalina.sh #修改配置文件,设置变量 CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib" vim /etc/profile #设置环境变量 export CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib source /etc/profile #重新识别 cat /usr/local/tomcat8/logs/catalina.out #查看日志 26-Sep-2021 19:17:31.460 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"] vim /usr/local/java/jre/lib/security/java.security #关闭8005端口 securerandom.source=file:/dev/urandom
Tomcat线程池
在Tomcat中每一个请求都是一个线程,所以可以使用线程池(连接器),来提高性能
-
线程池:多线程处理形式,将任务添加成队列,创建线程自动于后台启动。
-
开启并使用