了解tomcat安装

博文结构
开启Manager管理页面
开启host-mangent管理页面
分割Tomcat的运行日志
定义Tomcat 404错误返回的页面
Tomcat服务的内存优化
Tomcat线程池的优化
更改Tomcat服务的请求方式

一.开启Manager管理页面

当正常访问Tomcat页面时,会出现如下:
Tomcat优化_第1张图片

Tomcat优化_第2张图片

  • 修改tomcat配置文件(在最后添加必须在/tomcat闭合中添加如下)
[root@localhost /]# vim /usr/local/tomcat/conf/tomcat-users.xml

                  \\登录的用户名及密码
           \\在这个上面添加
[root@localhost /]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
\\在这个配置文件中下面这段修改一下即可

                \\允许访问的IP,用管道符隔开
  


[root@localhost /]# /usr/local/tomcat/bin/shutdown.sh 
[root@localhost /]# /usr/local/tomcat/bin/startup.sh
  • 访问如下
    Tomcat优化_第3张图片

  • 在web图形页面进行添加war包
[root@localhost ~]# cat index.jsp 
xws
[root@localhost ~]# jar -vcf index.war index.jsp 

Tomcat优化_第4张图片

Tomcat优化_第5张图片

Tomcat优化

二.开启host-manager管理页面

Tomcat优化_第6张图片

Tomcat优化_第7张图片

  • 在这个配置文件中在添加,换一个用户名(同上)
  • 注:与上面不一样添加这俩条
[root@localhost ~]# vim /usr/local/tomcat/conf/tomcat-users.xml 

 
[root@localhost ~]# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml 

  
  

\\添加一下允许访问的IP即可,其他不用更改
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh 
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh 
  • 访问如下

Tomcat优化_第8张图片

Tomcat优化_第9张图片

Tomcat优化_第10张图片

  • 进入此页输入tomcat域名的信息即可,生产环境不建议使用

三.分割Tomcat的运行日志

需要使用第三方日志分割工具—下载cronolog日志压缩包

[root@localhost ~]# tar zxf cronolog-1.6.2.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/cronolog-1.6.2/
[root@localhost cronolog-1.6.2]# ./configure && make && make install
[root@localhost cronolog-1.6.2]# which cronolog   \\查看命令位置的绝对路径
/usr/local/sbin/cronolog
[root@localhost /]# vim /usr/local/tomcat/bin/catalina.sh
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 | /usr/local/sbin/cronolog /usr/local/tomcat/logs/test.%Y-%m-%d.out >> /dev/null &   \\在470行把原有的修改为这个
 \\大约在471行注释掉   #  >> "$CATALINA_OUT" 2>&1 "&"
[root@localhost /]# ls /usr/local/tomcat/logs/
catalina.2020-01-09.log  host-manager.2020-01-09.log  localhost_access_log.2020-01-09.txt  test.2020-01-09.out
catalina.out             localhost.2020-01-09.log     manager.2020-01-09.log
\\可以看到有一个test.2020-01-09.log

四.定义Tomcat 404错误返回的页面

默认情况下,客户端访问Tomcat服务器上一个不存在的目录时,就会提示404错误,而且会将我们Tomcat的版本信息显示出来,这是非常危险的。默认的404返回的错误页面如下:

Tomcat优化_第11张图片

  • 所以我们应该自定义一个错误页面提供给客户端
[root@localhost /]# vim /usr/local/tomcat/webapps/ROOT/error.jsp
error
[root@localhost /]# vim /usr/local/tomcat/conf/web.xml
\\大约在20几行添加以下内容,在/version3下面添加    
  23 
  24 404
  25 /error.jsp
  26 
[root@localhost /]# /usr/local/tomcat/bin/shutdown.sh
[root@localhost /]# /usr/local/tomcat/bin/startup.sh
  • 访问如下

Tomcat优化_第12张图片

五.Tomcat服务的内存优化

[root@localhost /]# vim /usr/local/tomcat/bin/catalina.sh 
 #!/bin/sh                             //在第一行下面添加以下内容
 JAVA_OPTS="-Dfile.encoding=UTF-8
 -server
 -Xms1023M
 -Xmx1024M
 -XX:NewSize=512M
 -XX:MaxNewSize=1020M
 -XX:NewRatio=2
 -XX:ParallelGCThreads=15
 -XX:+DisableExplicitGC"
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh 
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh
  • 验证

Tomcat优化_第13张图片

Tomcat优化_第14张图片

配置文件中添加的各个配置项解释如下:

-Xms:表示 JVM初始内存大小,也可以说是Java 初始化堆的大小,-Xms 与-Xmx 设成一样的值,避免 JVM 反复重新申请内存,导致性能大起大落,默认值为物理内存的 1/64;
-Xmx:表示最大 Java 堆大小,当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃,因此一般建议堆的最大值设置为可用内存的最大值的80%;
-Xmn:设置JVM最小内存(128-256就够了,一般不设置);
-XX:NewSize:设置新生代内存大小。 新生代,对象新创建的时候分配的内存空间,老生代在垃圾回收器回收过后该对象依然没有被回收,该对象就会移动到老生代;
-XX:PermSize:设置持久代内存大小,用于存放静态文件,如今Java类、方法等。持久代对垃圾回收没有显著影响,但是有些应 用可能动态生成或者调用一些class,持久带也称为方法区,方法区存储每一个java类的结构信息:比如运行时常量池,字段和方法数据,构造函数和普通方法的字节码内容以及类、实例、接口初始化时需要使用到的特殊方法等数据,JDK8中已经把持久代(PermGen Space) 干掉了,取而代之的元空间(Metaspace)。Metaspace占用的是本地内存,不再占用虚拟机内存;
-XX:MaxPermSize:设置最大值持久代内存大小,永久代不属于堆内存,堆内存只包含新生代和老年代;
-XX:NewRatio:改变新旧空间的比例,意思是新空间的尺寸是旧空间的1/8(默认为8);
-XX:ParallelGCThreads 可用来增加并行度,需要多cpu;
-XX:+DisableExplicitGC:关闭System.gc(),简单理解就是关闭java中的内存回收机制;

六.Tomcat线程池的优化

[root@localhost /]# vim /usr/local/tomcat/conf/server.xml 
 53                //在这行内容下添加以下内容
 54         

70     

116     
Excutor参数说明:

name:共享线程池的名字,这是connector为了共享线程池要引用的名字,该名称必须唯一
namePrefix:在JVM上,每运行线程都可以有一个name字符串,这一属性为线程池中每个线程的name字符串设置了一个前缀,Tomcat将把线程号追加到这一前缀后面,默认值为tomcat-exec-
maxThreads:该线程池可以容纳的最大线程数,默认200
minSpareThreads:Tomcat应该始终打开的最小不活跃线程数,默认25
Connector参数说明:
executor:表示使用参数值对应的线程池。

七.更改Tomcat服务的请求方式

  • Tomcat支持的三种请求方式
    BIO:阻塞式I/O操作,Tomcat7以下版本默认情况下是以bio模式运行的,每个请求都要创建一个线程来处理,线程开销比较大,不适用高并发的场景,性能也最低;
    NIO:基于缓冲区,能提供非阻塞I/O操作,和传统的BIO相比,具备更好的并发性能;
    APR(Apache portable run-time libraries):简单理解,就是从操作系统级别解决异步IO问题,大幅度的提高服务器的处理和相应性能,也是Tomcat运行高并发的首选模式;

APR提供的主要功能模块包括:内存分配及内存池、原子操作、文件I/O、锁、内存映射、哈希表、网络I/O、轮询、进程及线程操作等等,通过采用APR,Tomcat可以获得高度可扩展性以及优越的性能,并且可以更好的与本地服务器技术集成,从而可以使Tomcat作为一款通用的Web服务器使用,而不仅仅作为轻量级应用服务器。在这种情况下,Java将不再是一门侧重于后端的编程语言,也可以更多的用于成熟的Web服务器平台。

  • 更改其请求方式为NIO(Tomcat8以上版本,默认使用的就是NIO模式)

  • 查看日志文件
    Tomcat优化_第15张图片

  • 更该其请求方式为APR方式

下载apr
下载apr-util

[root@localhost /]# yum -y install apr-devel openssl-devel
[root@localhost ~]# tar zxf apr-1.5.2.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/apr-1.5.2/
[root@localhost apr-1.5.2]# ./configure --prefix=/usr/local/apr && make && make install
[root@localhost ~]# tar zxf apr-util-1.5.4.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/apr-util-1.5.4/
[root@localhost apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install
[root@localhost apr-util-1.5.4]# cd /usr/local/tomcat/bin/
[root@localhost bin]# tar zxf tomcat-native.tar.gz 
[root@localhost bin]# cd tomcat-native-1.2.18-src/native/
[root@localhost native]# ./configure --with-apr=/usr/local/apr --with-java-home=/usr/local/jdk1.8.0_211 && make && make install
\\编译安装tomcat自带的tomcat-native软件包
[root@localhost ~]# vim /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
\\在最下面添加即可
[root@localhost ~]# source /etc/profile  \\更新环境变量
[root@localhost ~]# cd /usr/local/tomcat/
[root@localhost tomcat]# openssl genrsa -out ca.key 4096  \\ 生成所需秘钥
Generating RSA private key, 4096 bit long modulus
....................................................++
.........................................................................++
e is 65537 (0x10001)
[root@localhost tomcat]# openssl req -new -x509 -days 7304 -key ca.key -out ca.crt
\\提示随便输入即可
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml          //编写tomcat主配置文件

                 //升级为http 2.0协议
         
             
         
     
\\大约在88页有一个模板,把注释去掉,更改一下即可
[root@localhost logs]# /usr/local/tomcat/bin/shutdown.sh 
[root@localhost logs]# /usr/local/tomcat/bin/startup.sh                //重新启动tomcat服务
[root@localhost tomcat]# netstat -anpt | grep 443
tcp6       0      0 :::443                  :::*                    LISTEN      34771/java   
\\确定443端口已经开启
  • 访问如下

Tomcat优化_第16张图片

Tomcat优化_第17张图片

Tomcat优化_第18张图片

[root@localhost ~]# cat /usr/local/tomcat/logs/test.2019-12-09.out | grep apr
//根据查看tomat的日志来了解tomcat的工作模式

Tomcat优化_第19张图片