# 利刃出鞘_Tomcat 核心原理解析(十)-- Tomcat 性能调优--1
利刃出鞘_Tomcat 核心原理解析(十)-- Tomcat 性能调优–1
一、Tomcat专题 - Tomcat性能调优 - 性能测试
1、tomcat 性能测试:
对于系统性能,用户最直观的感受就是系统的加载和操作时间,即用户执行某项操作的耗时。从更为专业的角度上讲,性能测试可以从以下两个指标量化。
1) 响应时间:如上所述,为执行某个操作的耗时。大多数情况下,我们需要针对同一个操作测试多次,以获取操作的平均响应时间。
2)吞吐量:即在给定的时间内,系统支持的事务数量,计算单位为 TPS。
通常情况下,我们需要借助于一些自动化工具来进行性能测试,因为手动模拟大量用户的并发访问几乎是不可行的,而且现在市面上也有很多的性能测试工具可以使用,如:ApacheBench、ApacheJMeter、WCAT、WebPolygraph、LoadRunner。
2、免费的工具:ApacheBench 使用。
ApacheBench(ab)是一款 ApacheServer 基准的测试工具,用户测试 Apache Server 的服务能力(每秒处理请求数),它不仅可以用户 Apache 的测试,还可以用于测试 Tomcat、Nginx、lighthttp、IIS 等服务器。
3、环境准备:打开一个虚拟机 CentOS7,提前安装好 jdk8 和 mysql
4、安装 免费的工具:ApacheBench
# 安装 免费的工具:ApacheBench
yum install httpd‐tools
# 查看 ApacheBench 版本号
ab -V
5、下载 并上传至 CentOS7 服务器上。并解压。
6、解压 apache-tomcat-8.5.42.tar.gz
# 切换目录
[root@bogon tomcat]# cd /usr/local/tomcat/
# 解压
[root@bogon tomcat]# tar -zxvf apache-tomcat-8.5.42.tar.gz
7、上传 ROOT.war 包到 /usr/local/tomcat/apache-tomcat-8.5.42.tar.gz/webapps/
# 切换目录
[root@bogon tomcat]# cd /usr/local/tomcat/
# 删除 /usr/local/tomcat/apache-tomcat-8.5.42.tar.gz/webapps/ 目录下的所有原文件和文件夹。
[root@bogon tomcat]# ll ./apache-tomcat-8.5.42/webapps/
总用量 8
drwxr-x---. 14 root root 4096 8月 31 19:19 docs
drwxr-x---. 6 root root 83 8月 31 19:19 examples
drwxr-x---. 5 root root 87 8月 31 19:19 host-manager
drwxr-x---. 5 root root 103 8月 31 19:19 manager
drwxr-x---. 3 root root 4096 8月 31 19:19 ROOT
[root@bogon tomcat]# rm -rf ./apache-tomcat-8.5.42/webapps/*
[root@bogon tomcat]# ll ./apache-tomcat-8.5.42/webapps/
总用量 0
# 上传 ROOT.war 包到 /usr/local/tomcat/apache-tomcat-8.5.42.tar.gz/webapps/
[root@bogon tomcat]# ll
总用量 38060
drwxr-xr-x. 9 root root 220 8月 31 19:19 apache-tomcat-8.5.42
-rw-r--r--. 1 root root 9711748 8月 9 08:16 apache-tomcat-8.5.42.tar.gz
-rw-r--r--. 1 root root 29257264 8月 9 08:08 ROOT.war
[root@bogon tomcat]#
[root@bogon tomcat]#
[root@bogon tomcat]# mv ROOT.war ./apache-tomcat-8.5.42/webapps/
[root@bogon tomcat]#
[root@bogon tomcat]#
[root@bogon tomcat]# ll ./apache-tomcat-8.5.42/webapps/
总用量 28572
-rw-r--r--. 1 root root 29257264 8月 9 08:08 ROOT.war
[root@bogon tomcat]#
8、上传 course_db.sql 到 CentOS7 服务器 /usr/local/tomcat/ 目录。
并登录 mysql 执行 mysql> source /usr/local/tomcat/course_db.sql
# 切换目录
[root@bogon tomcat]# cd /usr/local/tomcat/
[root@bogon tomcat]# ll
总用量 9508
drwxr-xr-x. 9 root root 220 8月 31 19:19 apache-tomcat-8.5.42
-rw-r--r--. 1 root root 9711748 8月 9 08:16 apache-tomcat-8.5.42.tar.gz
-rw-r--r--. 1 root root 19789 8月 9 08:08 course_db.sql
9、在 CentOS7 服务器 /usr/local/tomcat/ 目录。登录 mysql 执行 mysql> source /usr/local/tomcat/course_db.sql
# 切换目录
[root@bogon ~]# cd /usr/local/tomcat
[root@bogon tomcat]# ll
总用量 9508
drwxr-xr-x. 9 root root 220 8月 31 19:19 apache-tomcat-8.5.42
-rw-r--r--. 1 root root 9711748 8月 9 08:16 apache-tomcat-8.5.42.tar.gz
-rw-r--r--. 1 root root 19789 8月 9 08:08 course_db.sql
# 登录 mysql
[root@bogon tomcat]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.39 MySQL Community Server - GPL
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
# 执行 mysql> source /usr/local/tomcat/course_db.sql 导入数据表。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.05 sec)
mysql> source /usr/local/tomcat/course_db.sql
Query OK, 0 rows affected, 1 warning (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 1 row affected (0.02 sec)
Database changed
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected, 5 warnings (0.11 sec)
Query OK, 55 rows affected (0.07 sec)
Records: 55 Duplicates: 0 Warnings: 0
Query OK, 0 rows affected (0.02 sec)
Query OK, 0 rows affected, 4 warnings (0.08 sec)
Query OK, 14 rows affected (0.02 sec)
Records: 14 Duplicates: 0 Warnings: 0
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected, 3 warnings (0.04 sec)
Query OK, 23 rows affected (0.02 sec)
Records: 23 Duplicates: 0 Warnings: 0
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.04 sec)
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
# 再次查看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| course_db |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
# 查看数据库中的数据表
mysql> use course_db;
Database changed
mysql>
mysql>
mysql> show tables;
+---------------------+
| Tables_in_course_db |
+---------------------+
| course |
| emp |
| operation_log |
| user |
+---------------------+
4 rows in set (0.01 sec)
10、先启动 tomcat ,再关闭 tomcat , 这时会生成文件夹 /webapps/ROOT/WEB-INF/。
打开 修改 usr/local/tomcat/apache-tomcat-8.5.42/webapps/ROOT/WEB-INF/classes/jdbc.properties 文件。进行编辑修改。
# 切换目录
[root@bogon ~]# cd /usr/local/tomcat
[root@bogon tomcat]# ./apache-tomcat-8.5.42/bin/startup.sh
[root@bogon tomcat]# ./apache-tomcat-8.5.42/bin/shutdown.sh
# 修改 usr/local/tomcat/apache-tomcat-8.5.42/webapps/ROOT/WEB-INF/classes/jdbc.properties 文件。
[root@bogon tomcat]# vim ./apache-tomcat-8.5.42/webapps/ROOT/WEB-INF/classes/jdbc.properties
# 修改 mysql 登录用户、密码和 数据库名,如下:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/course_db?characterEncoding=utf8&useSSL=false
jdbc.username=root
jdbc.password=12311
# 再次启动 tomcat
[root@bogon tomcat]# ./apache-tomcat-8.5.42/bin/startup.sh
# 查看 tomcat 启动日志
[root@bogon tomcat]# tail -f ./apache-tomcat-8.5.42/logs/catalina.out
11、克隆会话,切换到 cd /usr/local/tomcat/ 目录下,进行性能测试。
1)进行压力性能测试
ab ‐n 1000 ‐c 100 -p data.json -T application/json http://localhost:8080/course/search.do?page=1&pageSize=10
2)性能测试,参数说明:
参数 | 含义描述 | ||
---|---|---|---|
-n | 在测试会话中所执行的请求个数,默认只执行一次请求 | ||
-c | 一次产生的请求个数,默认一次一个 | ||
-p | 包含了需要POST的数据文件 | ||
-t | 测试所进行的最大秒数,默认没有时间限制 | ||
-T | POST数据所需要使用的Content-Type头信息 | ||
-v | 设置显示信息的详细程度 | ||
-w | 以HTML表的格式输出结果,默认是白色背景的两列宽度的一张表 | ||
# 切换目录
[root@bogon ~]# cd /usr/local/tomcat/
# 创建并编辑 data.json 文件。
vim data.json
# 内容如下:
{"name":"", "teacherName":""}
# 按 ESC 切换到阅读模式,再按 :wq 保存退出。
# 打开另一个终端,切换目录
[root@bogon ~]# cd /usr/local/tomcat
# 关闭tomcat
[root@bogon tomcat]# ./apache-tomcat-8.5.42/bin/shutdown.sh
# 启动tomcat
[root@bogon tomcat]# ./apache-tomcat-8.5.42/bin/startup.sh
# 查看tomcat运行日志
[root@bogon tomcat]# tail -f ./apache-tomcat-8.5.42/logs/catalina.out
# 打开另一个终端,切换目录
[root@bogon ~]# cd /usr/local/tomcat
# 进行压力性能测试
[root@bogon tomcat]# ab -n 1000 -c 100 -p data.json -T application/json http://localhost:8080/course/search.do?page=1&pageSize=10
[1] 3469
[root@bogon tomcat]# This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
[root@bogon tomcat]# Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software:
Server Hostname: localhost
Server Port: 8080
Document Path: /course/search.do?page=1
Document Length: 2141 bytes
Concurrency Level: 100
Time taken for tests: 85.063 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 2304000 bytes
Total body sent: 188000
HTML transferred: 2141000 bytes
Requests per second: 11.76 [#/sec] (mean)
Time per request: 8506.271 [ms] (mean)
Time per request: 85.063 [ms] (mean, across all concurrent requests)
Transfer rate: 26.45 [Kbytes/sec] received
2.16 kb/s sent
28.61 kb/s total
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.1 0 7
Processing: 600 8015 1336.4 8250 16415
Waiting: 595 8014 1337.4 8250 16415
Total: 603 8015 1335.8 8250 16415
Percentage of the requests served within a certain time (ms)
50% 8250
66% 8487
75% 8581
80% 8639
90% 8775
95% 8915
98% 9106
99% 9438
100% 16415 (longest request)
[root@bogon tomcat]#
[1]+ 完成 ab -n 1000 -c 100 -p data.json -T application/json http://localhost:8080/course/search.do?page=1
上一节关联链接请点击
# 利刃出鞘_Tomcat 核心原理解析(九)