Tomcat优化
隐层版本信息
隐藏HTTP 头部的版本信息
编辑server.xml,为Connector 添加 server 属性
[root@wzy ~]# vi /usr/local/tomcat/conf/server.xml
添加红色部分的server属性
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" server="APP Srv1.0"/>
重启tomcat服务
[root@wzy ~]# systemctl restart tomcat
[root@wzy ~]# netstat -anplt | grep java
验证结果
192.168.10.5:8080/index.jsp
F12 然后刷新页面,查看网络,点index.jsp看标头版本号已改
隐藏404页面出现的版本号
有时候为了服务器安全很多信息是不能显露出来了,这其中就包含了tomcat服务器的版本号。
修改前如下:
针对该信息的显示是由一个jar包控制的,该jar包存放在 Tomcat 安装目录下的lib目录下,名称为 catalina.jar。
我们可以通过 jar xf 或unzip命令解压这个 jar 包会得到两个目录 META-INF 和 org ,通过修改org/apache/catalina/util/ServerInfo.properties 文件中的 serverinfo 字段来实现来更改我们tomcat的版本信息。
进入tomcat的lib目录找到catalina.jar文件
[root@wzy ~]# cd /usr/local/tomcat/lib/
解压catalina.jar包
[root@wzy lib]# jar xf catalina.jar
修改ServerInfo.properties文件
进入org/apache/catalina/util 编辑配置文件ServerInfo.properties
[root@wzy lib]# cd org/apache/catalina/util
[root@wzy util]# vi ServerInfo.properties
server.info= app srv/1.0
server.number=1.0
server.built=Jun 4 2019 20:29:04 UTC
将修改后的信息压缩回jar包
[root@wzy util]# cd /usr/local/tomcat/lib/
[root@wzy lib]# jar uvf catalina.jar org/apache/catalina/util/ServerInfo.properties
删除解压目录
[root@wzy lib]# rm -rf META-INF/ org/
重启tomcat
[root@wzy lib]# systemctl restart tomcat
[root@wzy lib]# netstat -anplt | grep java
测试
http://192.168.10.5:8080/abc.jsp
Tomcat 中的三种运行模式之运行模式的优化
Tomcat支持三种接收请求的处理方式:BIO、NIO、APR 。
BIO(Blocking IO,阻塞式):
阻塞式I/O操作即使用的是传统 I/O操作,Tomcat7以下版本默认情况下是以BIO模式运行的,由于每个请求都要创建一个线程来处理,线程开销较大,不能处理高并发的场景,在三种模式中性能也最低。
NIO(Non-blocking IO,非阻塞IO):
NIO是Java 1.4 及后续版本提供的一种新的I/O操作方式,是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,利用java异步IO技术使Tomcat运行性能有所提升,可以通过少量的线程处理大量的请求。它拥有比传统I/O操作(BIO)更好的并发运行性能。tomcat 8版本及以上默认就是在NIO模式下允许。
Java NIO 可以让你非阻塞的使用IO,例如:当线程从通道读取数据到缓冲区时,线程还是可以进行其他事情。当数据被写入到缓冲区时,线程可以继续处理它。从缓冲区写入通道也类似。Tomcat8 在Linux系统中默认使用这种方式。
启动Tomcat后,在/usr/local/tomcat/logs/catalina.out日志中可以查看tomcat8运行模式时NIO。
不过,在tomcat8中有最新的nio2,速度更快,建议使用nio2。
修改配置文件
[root@wzy ~]# vim /usr/local/tomcat/conf/server.xml #修改