配置Tomcat性能优化

📒博客主页: ​​微笑的段嘉许博客主页​

💻微信公众号:​​微笑的段嘉许​

🎉欢迎关注🔎点赞👍收藏⭐留言📝

📌本文由微笑的段嘉许原创!

📆51CTO首发时间:🌴2022年2月日18🌴

✉️坚持和努力一定能换来诗与远方!

🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

本文介绍

保姆级教程通过一个综合实验案例手把手教你Tomcat的安装配置与性能优化。


📝理论讲解:

详细介绍

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

​ 诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。Tomcat最新版本为10.0.23。

名称由来

Tomcat最初是由Sun的软件架构师詹姆斯·邓肯·戴维森开发的。后来他帮助将其变为开源项目,并由Sun贡献给Apache软件基金会。由于大部分开源项目O'Reilly都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为Tomcat(英语公猫或其他雄性[猫科动物)。而O'Reilly出版的介绍Tomcat的书籍(ISBN 0-596-00318-8)的封面也被设计成了一个公猫的形象。而Tomcat的Logo兼吉祥物也被设计为一只公猫。


📖实验配置与实现:

推荐步骤:

  • Centos02安装DNS解析www.duan.com​,www.jia.com,www.xu.com访问网站客户端访问验证
  • Cenros01安装tomcat发布动态网站jpress使用www.duan.com访问,配置虚拟主机通过www.jia.com和www.xu.com访问不同的虚拟主机
  • tomcat性能优化

一、Centos02安装DNS解析www.duan.com​,www.jia.com,www.xu.com访问网站客户端访问验证

1、配置网卡服务

1)配置IP地址和DNS

[root@centos02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32     //进入网卡配置文件
[root@centos02 ~]# systemctl restart network //重新启动网卡服务
[root@centos02 ~]# cat /etc/resolv.conf //查看DNS配置是否生效
# Generated by NetworkManager
nameserver 192.168.100.20

配置Tomcat性能优化_tomcat

2、安装DNS服务

1)挂载系统光盘

[root@centos02 ~]# mount /dev/cdrom /mnt/     //挂载系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos02 ~]# ls /mnt/ //查看系统光盘是否挂载成功
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL

2)安装DNS程序包

[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm 
警告:/mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:bind-32:9.9.4-50.el7 ################################# [100%]
[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm
警告:/mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:bind-chroot-32:9.9.4-50.el7 ################################# [100%]

3、修改DNS配置文件

1)修改DNS主配置文件

[root@centos02 ~]# echo "" > /etc/named.conf       //清空DNS主配置文件
[root@centos02 ~]# vim /etc/named.conf //进入DNS主配置文件
---
options {
listen-on port 53 { any ;};
};
zone "duan.com" IN {
type master;
file "var/named/duan.com.zone";
};
zone "jia.com" IN {
type master;
file "var/named/jia.com.zone";
};
zone "xu.com" IN {
type master;
file "var/named/xu.com.zone";
};
---
[root@centos02 ~]# named-checkconf /etc/named.conf //检查主配置文件修改是否有误

配置Tomcat性能优化_tomcat_02

2)修改第一个DNS区域配置文件

[root@centos02 ~]# vim /var/named/duan.com.zone     //进入第一个DNS区域配置文件
---
$TTL 86400
@ SOA duan.com. root.duan.com. (
2023021710
1H
15M
1W
1D
)
@ NS centos02.duan.com.
centos02 A 192.168.100.20
www A 192.168.100.10
---
[root@centos02 ~]# vim /var/named/duan.com.zone
[root@centos02 ~]# named-checkzone duan.com /var/named/duan.com.zone
zone duan.com/IN: loaded serial 2023021710
OK //检查主配置文件修改是否有误

配置Tomcat性能优化_tomcat_03

3)修改第二个DNS区域配置文件

[root@centos02 ~]# cp /var/named/duan.com.zone /var/named/jia.com.zone      //复制第一个区域配置文件到/var/namedjia.com.zone
[root@centos02 ~]# vim /var/named/jia.com.zone //进入第二个区域配置文件
---
:%s/duan.com/jia.com/g //把duan.com替换为jia.com
$TTL 86400
@ SOA jia.com. root.jia.com. (
2023021710
1H
15M
1W
1D
)
@ NS centos02.jia.com.
centos02 A 192.168.100.20
www A 192.168.100.10
---
[root@centos02 ~]# named-checkzone jia.com /var/named/jia.com.zone //检查主配置文件修改是否有误
zone jia.com/IN: loaded serial 2023021710
OK

配置Tomcat性能优化_tomcat_04

4)修改第三个DNS区域配置文件

[root@centos02 ~]# cp /var/named/duan.com.zone /var/named/xu.com.zone     //复制第一个区域配置文件到/var/named/xu.com.zone
[root@centos02 ~]# vim /var/named/xu.com.zone //进入第三个区域配置文件
---
:%s/duan.com/xu.com/g //把duan.com替换为xu.com
$TTL 86400
@ SOA xu.com. root.xu.com. (
2023021710
1H
15M
1W
1D
)
@ NS centos02.xu.com.
centos02 A 192.168.100.20
www A 192.168.100.10
---
[root@centos02 ~]# named-checkzone xu.com /var/named/xu.com.zone
zone xu.com/IN: loaded serial 2023021710
OK

配置Tomcat性能优化_tomcat_05

5)启动DNS服务设置开机自启

[root@centos02 ~]# systemctl start named        //启动DNS服务
[root@centos02 ~]# systemctl enable named //设置开机自启
[root@centos02 ~]# netstat -anptu | grep named //监听端口
tcp 0 0 192.168.100.20:53 0.0.0.0:* LISTEN 40870/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 40870/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 40870/named
tcp6 0 0 ::1:953 :::* LISTEN 40870/named
udp 0 0 192.168.122.1:53 0.0.0.0:* 40870/named
udp 0 0 192.168.100.20:53 0.0.0.0:* 40870/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 40870/named

二、Centos02安装tomcat发布动态网站jpress使用www.duan.com访问,配置虚拟主机通过www.jia.con和www.xu.com访问不同的虚拟主机

1、部署tomcat

1)解压源代码程序

[root@centos01 ~]# rz     //上传tomcat源代码程序
z waiting to receive.**B0100000023be50
[root@centos01 ~]# ls //查看是否上传成功
anaconda-ks.cfg initial-setup-ks.cfg 模板 图片 下载 桌面
apache-tomcat-8.5.50.tar.gz 公共 视频 文档 音乐
---
[root@centos01 ~]# tar zxf ./apache-tomcat-8.5.50.tar.gz -C /usr/src/ //解压tomcat源代码程序
[root@centos01 ~]# mv /usr/src/apache-tomcat-8.5.50/ /usr/local/tomcat //剪切tomcat源代码程序到/usr/local/tomcatm目录

2)修改tomcat主配置文件

[root@centos01 ~]# vim /usr/local/tomcat/conf/server.xml      //进入tomcat主配置文件
---
73 <Connector port="80" protocol="HTTP/1.1" //监听80端口
74 connectionTimeout="20000"
75 redirectPort="8443" />
152 <Host name="www.duan.com" appBase="webapps" //域名和网站根目录
153 unpackWARs="true" autoDeploy="true">
154 <Valve className="org.apache.catalina.valves.AccessLogValve" directo ry="logs"
155 prefix="www.duan.com_access_log" suffix=".txt"
156 pattern="%h %l %u %t "%r" %s %b" />
157 </Host>
---
[root@centos01 ~]# /usr/local/tomcat/bin/startup.sh //启动tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@centos01 ~]# netstat -anptu | grep java //监听端口
tcp6 0 0 :::80 :::* LISTEN 40414/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 40414/java
tcp6 0 0 :::8009 :::* LISTEN 40414/java

配置Tomcat性能优化_tomcat_06

配置Tomcat性能优化_配置文件_07

3)使用win10虚拟机验证访问tomcat默认网站

配置Tomcat性能优化_配置文件_08

2、tomcat发布动态网站

1)上传项目到tomcat的根目录

[root@centos01 ~]# cd /usr/local/tomcat/webapps/      //切换到tomcat根目录
[root@centos01 webapps]# rz //上传项目
z waiting to receive.**B0100000023be50
[root@centos01 webapps]# ls //查看是否上传成功
docs examples host-manager jpress-v5.0.8.war manager ROOT
[root@centos01 webapps]# mv jpress-v5.0.8.war jpress.war //重命名
[root@centos01 webapps]# ls //查看
docs examples host-manager jpress jpress.war manager ROOT

2)安装数据库

[root@centos01 ~]# mount /dev/cdrom /mnt/     //挂在系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos01 ~]# ls /mnt/ //查看光盘是否挂载成功
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
[root@centos01 ~]# rm -rf /etc/yum.repos.d/CentOS-* //删除系统自带的yum源
[root@centos01 ~]# ls /etc/yum.repos.d/ //查看本地yum源目录
local.repo
[root@centos01 ~]# cat /etc/yum.repos.d/local.repo //查看本地yum源
[local]
name=centos
baseurl=file:///mnt
enabled=1
gpgcheck=0
---
[root@centos01 ~]# yum -y install mariadb mariadb-server //安装数据库
[root@centos01 ~]# systemctl start mariadb //启动数据库
[root@centos01 ~]# systemctl enable mariadb //设置开机自启
[root@centos01 ~]# mysqladmin -uroot password //创建管理数据库账户名为root,设置密码
New password: //输入密码
Confirm new password: //确定密码
[root@centos01 ~]# mysql -uroot -ppwd@123 //登录数据库
MariaDB [(none)]> create database jpress charset utf8; //创建数据库名字支持中文
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on jpress.* to 'duanjiaxu'@'localhost' identified by 'pwd@123'; //授权用户访问,授权用户为duanjaixu密码为pwd@123
Query OK, 0 rows affected (0.00 sec)

配置Tomcat性能优化_配置文件_09

3)在win10客户端安装jdk

配置Tomcat性能优化_配置文件_10

配置Tomcat性能优化_tomcat_11

​等待安装完成:​

配置Tomcat性能优化_配置文件_12

4)使用win10虚拟机验证

配置Tomcat性能优化_centos_13

配置Tomcat性能优化_centos_14

配置Tomcat性能优化_tomcat_15

配置Tomcat性能优化_tomcat_16

配置Tomcat性能优化_centos_17

3、配置tomcat虚拟主机

1)创建虚拟主机网站根目录

[root@centos01 ~]# mkdir -p /www/jia      //创建虚拟网站根目录
[root@centos01 ~]# mkdir -p /www/xu
[root@centos01 ~]# echo "www.jia.com" > /www/jia/index.jsp //设置网站主页
[root@centos01 ~]# echo "www.xu.com" > /www/xu/index.jsp

2)修改tomcat主配置文件

[root@centos01 ~]# vim /usr/local/tomcat/conf/server.xml      //进入tomcat主配置文件
---
152 <Host name="www.duan.com" appBase="webapps" //第一虚拟主机
153 unpackWARs="true" autoDeploy="true">
154 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
155 prefix="www.duan.com_access_log" suffix=".txt"
156 pattern="%h %l %u %t "%r" %s %b" />
157 </Host>
158 <Host name="www.jia.com" appBase="webapps" //第二个虚拟主机
159 unpackWARs="true" autoDeploy="true">
160 <Context docBase="/www/jia/" path="" reloadble="fales"/>
161 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
162 prefix="www.duan.com_access_log" suffix=".txt"
163 pattern="%h %l %u %t "%r" %s %b" />
164 </Host>
165 <Host name="www.xu.com" appBase="webapps" //第三个虚拟主机
166 unpackWARs="true" autoDeploy="true">
167 <Context docBase="/www/xu/" path="" reloadble="fales"/>
168 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
169 prefix="www.duan.com_access_log" suffix=".txt"
170 pattern="%h %l %u %t "%r" %s %b" />
171 </Host>

配置Tomcat性能优化_tomcat_18

3)重新启动tomcat服务

[root@centos01 ~]# /usr/local/tomcat/bin/shutdown.sh      //停止tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@centos01 ~]# /usr/local/tomcat/bin/startup.sh //启动tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@centos01 ~]# netstat -anptu | grep java //监听网卡
tcp6 0 0 :::80 :::* LISTEN 41936/java
tcp6 0 0 :::8009 :::* LISTEN 41936/java

4)使用win10虚拟机验证

配置Tomcat性能优化_tomcat_19

配置Tomcat性能优化_配置文件_20

三、tomcat性能优化

1、配置tomcat管理控制台监控线程和tomcat的工作模式

1)修改访问tomcat管理控制台

[root@centos01 ~]# vim /usr/local/tomcat/conf/tomcat-users.xml      //进入tomcat管理控制台配置文件
---
44 <role rolename="manager-gui"/>
45 <role rolename="manager-script"/>
46 <role rolename="manager-jmx"/>
47 <role rolename="manager-status"/>
48 <role rolename="admin-gui"/>
49 <role rolename="admin-script"/>
50 <user username="admin" password="pwd@123" roles="manager-gui,manager-scrip t,manager-jmx,manager-status,admin-gui,admin-script"/> //创建用户名和设置密码,授权角色
51 </tomcat-users>
---
[root@centos01 ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml //进入访问控制配置文件
---
18 <Context antiResourceLocking="false" privileged="true" >
19 <Valve className="org.apache.catalina.valves.RemoteAddrValve"
20 allow="192\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> //修改为192
21 <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Inte ger|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter \$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
22 </Context>
---
[root@centos01 ~]# /usr/local/tomcat/bin/shutdown.sh //停止tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@centos01 ~]# /usr/local/tomcat/bin/startup.sh //启动tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@centos01 ~]# netstat -anptu | grep java //监听网卡服务
tcp6 0 0 :::80 :::* LISTEN 42514/java
tcp6 0 0 :::8009 :::* LISTEN 42514/java

配置Tomcat性能优化_配置文件_21

2)使用win10虚拟机验证

配置Tomcat性能优化_tomcat_22

配置Tomcat性能优化_tomcat_23

配置Tomcat性能优化_centos_24

2、优化tomcat线程

1)修改tomcat主配置文件

[root@centos01 ~]# vim /usr/local/tomcat/conf/server.xml      //进入tomcat主配置文件
---
73 <Connector port="80" protocol="HTTP/1.1"
74 connectionTimeout="20000" //连接请求超时时间20000毫秒
75 redirectPort="8443" //加密端口
76 maxTheads="15000" //最大线程15000
77 minspareTheads="2000" //最下空闲线程2000
78 acceptCount="2000" //列队保存2000个请求,拉长请求时间
79 />

配置Tomcat性能优化_tomcat_25

3、JVM性能调优

1)设置虚拟机的内存为4GB

配置Tomcat性能优化_centos_26

2)修改最大内存

[root@centos01 ~]# vim /usr/local/tomcat/bin/catalina.sh      //进入配置文件
---
JAVA_OPTS="-server -Xms1024m -Xmx4096m -XX:NewSize=50m -XX:MaxNewSize=100m"
---
[root@centos01 ~]# /usr/local/tomcat/bin/shutdown.sh //停止tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@centos01 ~]# /usr/local/tomcat/bin/startup.sh //启动tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@centos01 ~]# netstat -anptu | grep java //监听网卡服务
tcp6 0 0 :::80 :::* LISTEN 45095/java
tcp6 0 0 :::8009 :::* LISTEN 45095/java

2)使用win10虚拟机验证

​JVM性能优化前:​

配置Tomcat性能优化_tomcat_27

​JVM性能优化后:​

配置Tomcat性能优化_centos_28

4、jmeter压力测试

1)在win10虚拟机上安装jmeter压力测试工具

配置Tomcat性能优化_tomcat_29

配置Tomcat性能优化_配置文件_30

配置压力测试的服务器域名和端口号、协议、路径

配置Tomcat性能优化_配置文件_31

配置线程数

配置Tomcat性能优化_tomcat_32

异常百分之零

配置Tomcat性能优化_centos_33


🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

配置Tomcat性能优化_配置文件_34