# 利刃出鞘_Tomcat 核心原理解析(十)-- Tomcat 性能调优--1

news2024/12/23 10:56:09

利刃出鞘_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

tomcat-49.png

4、安装 免费的工具:ApacheBench


# 安装 免费的工具:ApacheBench
yum install httpd‐tools

# 查看 ApacheBench 版本号
ab -V

tomcat-50.png

5、下载 并上传至 CentOS7 服务器上。并解压。

tomcat-51.png

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 831 19:19 docs
drwxr-x---.  6 root root   83 831 19:19 examples
drwxr-x---.  5 root root   87 831 19:19 host-manager
drwxr-x---.  5 root root  103 831 19:19 manager
drwxr-x---.  3 root root 4096 831 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 831 19:19 apache-tomcat-8.5.42
-rw-r--r--. 1 root root  9711748 89 08:16 apache-tomcat-8.5.42.tar.gz
-rw-r--r--. 1 root root 29257264 89 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 89 08:08 ROOT.war
[root@bogon tomcat]# 

tomcat-52.png

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 831 19:19 apache-tomcat-8.5.42
-rw-r--r--. 1 root root 9711748 89 08:16 apache-tomcat-8.5.42.tar.gz
-rw-r--r--. 1 root root   19789 89 08:08 course_db.sql

tomcat-53.png

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 831 19:19 apache-tomcat-8.5.42
-rw-r--r--. 1 root root 9711748 89 08:16 apache-tomcat-8.5.42.tar.gz
-rw-r--r--. 1 root root   19789 89 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)

tomcat-54.png

tomcat-55.png

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

tomcat-56.png

tomcat-57.png

tomcat-58.png

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测试所进行的最大秒数,默认没有时间限制
-TPOST数据所需要使用的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-59.png

上一节关联链接请点击
# 利刃出鞘_Tomcat 核心原理解析(九)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2107533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SketchUp Pro 2024 for Mac/Win:专业3D建模软件的卓越之选

SketchUp Pro 2024作为一款在业界广受好评的三维建模软件&#xff0c;不仅适用于Mac系统&#xff0c;也完美兼容Windows平台&#xff0c;为用户提供了跨平台的强大建模能力。该软件以其直观易用的界面设计著称&#xff0c;无论是初学者还是资深设计师&#xff0c;都能迅速上手并…

介绍冯诺依曼体系结构和操作系统

&#x1f308;个人主页&#xff1a;Yui_ &#x1f308;Linux专栏&#xff1a;Linux &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;数据结构专栏&#xff1a;数据结构 &#x1f308;C专栏&#xff1a;C 文章目录 1. 冯诺依曼体系结构2. 操作系统&#xff08;O…

【数据结构取经之路】位图全解

目录 前言 C标准库里的位图 位图的设计及实现 位图几个关键接口的实现 set() reset() test() 完整代码 位图的使用场景 位图的优缺点 位图的使用演示 —— 几道面试题的讲解 前言 位图&#xff08;Bitmap&#xff09;是一种非常高效的数据结构&#xff0c;主要用于处…

Claude Enterprise:Anthropic 推出企业级AI助手挑战OpenAI

Anthropic公司推出了Claude Enterprise&#xff0c;这是一项新的企业级AI服务&#xff0c;旨在提供更安全、更可控的AI聊天机器人体验。通过这个服务&#xff0c;企业可以将内部知识库与Claude机器人连接&#xff0c;使其能够访问和分析公司数据&#xff0c;从而回答员工的查询…

【MySQL】MySQL Workbench下载安装、环境变量配置、基本MySQL语句、新建Connection

1.MySQL Workbench 下载安装&#xff1a; 进入网址&#xff1a;MySQL :: MySQL Workbench Manual :: 2 Installation &#xff08;1&#xff09;点击“MySQL Workbench on Windows”&#xff08;下载Windows版本&#xff09;&#xff08;2&#xff09;点击“Installing” &…

前端Vue框架,本地数据库nedb

封装 db.js&#xff08;文章nedb版本^1.8.0&#xff09; // db.js// 导入 NeDB 模块 const Datastore require(nedb)// 创建数据库实例,最大600M或100W行 const db new Datastore({ filename: ./database.db, autoload: true, inMemoryOnly: false, maxFileSize: 600 * 1024…

如何将 Redshift Cryptomatte AOV 与 teamrender 结合使用,成都渲染101云渲染

这篇文章将讨论在 Cinema 4D 中将 cryptomatte AOV 与 teamrender 结合使用时常见的问题和解决方案。在 Cinema 4D 中使用 AOV 时&#xff0c;用户希望它们的工作方式与其他 AOV 完全相同。但事实并非如此&#xff0c;尤其是与 teamrender 结合使用时。 在 Cinema 4D 中&#x…

【JAVA高级】并发同步工具CyclicBarrier 的使用介绍

&#x1f4dd;个人主页&#x1f339;&#xff1a;个人主页 ⏩收录专栏⏪&#xff1a;JAVA进阶 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339;&#xff0c;让我们共同进步&#xff01; 文章目录 CyclicBarrier 简介CyclicBarrier 的场景示意图&#xff1…

AI绘画时代的自媒体引流攻略:如何实现粉丝暴涨与盈利

一、AI绘画在自媒体引流和赚钱中的应用 创作独特视觉内容&#xff0c;吸引粉丝关注 AI绘画技术可以帮助自媒体从业者创作出独一无二的视觉内容&#xff0c;这些内容在社交媒体上具有很高的辨识度和吸引力。通过以下方式&#xff0c;AI绘画助力引流和赚钱&#xff1a; &#xf…

软件厂商与集成平台协同--打造无缝企业解决方案

引言 在现在的众多项目当中&#xff0c;很多企业面临着日益复杂的业务需求和不断变化的市场环境。为了保持竞争力&#xff0c;企业会选择采用高效的工具和系统来管理和运营。CRM&#xff08;客户关系管理&#xff09;软件和ERP&#xff08;企业资源规划&#xff09;系统是企业…

PMF源解析软件下载、安装、运行;Fpeak模式运行结果优化及误差评估;大气颗粒物理化性质等基础知识和通过PMF方法对其来源解析

目录 专题一 PMF源解析技术简要及其输入文件准备 专题二 PMF源解析技术的原理&#xff0c;PMF软件的实操及应用举例 专题三 PMF源解析结果的优化及误差评估 更多应用 颗粒物污染不仅对气候和环境有重要影响&#xff0c;而且对人体健康有严重损害&#xff0c;尤其在一些重污…

计算机毕设选题推荐-基于python的校园班级课程表管理系统

&#x1f496;&#x1f525;作者主页&#xff1a;毕设木哥 精彩专栏推荐订阅&#xff1a;在 下方专栏&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; 实战项目 文章目录 实战项目 一、基于python的校园班级课程表…

【C++】简述STL——string类的使用

文章目录 一、STL的简述1.STL的框架2.STL版本 二、string1、string的介绍2、为什么string类要实现为模板&#xff1f; 三、string的构造接口四、string的容量相关的接口五、string对象修改相关的接口1、insert2.earse3、assign4、replace 六、string对象字符串运算相关接口1、c…

【Linux】《Linux 常见指令全攻略》

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

JavaScript 知识:this、apply/call/bind、Promise、async/await、HTTP 库 Axios

1、变量、声明、传递 (值、引用) javascript:void(0) 含义 javascript:void(0) 中最关键的是 void 关键字&#xff0c; void 是 JavaScript 中非常重要的关键字&#xff0c;该操作符指定要计算一个表达式但是不返回值。void() 仅仅是代表不返回任何值&#xff0c;但是括号内的表…

【C++ 第二十章】智能指针

1.为什么需要智能指针&#xff1f; 下面我们先分析一下下面这段程序有没有什么内存方面的问题&#xff1f;提示一下&#xff1a;注意分析下面 Func 函数中的问题。 #include<exception> int div() {int a, b;cin >> a >> b;if (b 0)throw invalid_argume…

【Python基础】这篇文章带你了解Python的基本特点,让学习Python变得事半功倍!!!

一、Python的基本特点 简单易学&#xff1a;Python语法简洁清晰&#xff0c;拥有极其简单的说明文档&#xff0c;对于初学者来说非常友好。面向对象&#xff1a;Python既支持面向过程的编程也支持面向对象的编程&#xff0c;这使得Python能够灵活地应对各种编程需求。可移植性…

投放Facebook广告开户全流程解析:从开户到广告投放的实用指南

Facebook作为全球最大的社交平台之一&#xff0c;广告业务覆盖范围广泛&#xff0c;已成为各类企业推广产品和服务的重要渠道。要在Facebook上成功投放广告&#xff0c;首先需要完成广告账户的开户流程。本文将详细介绍投放Facebook广告开户的步骤和条件&#xff0c;并解释如何…

VBA Excel 出报表

源数据 目标 PS:调休 以高亮颜色区分 整理一下 CMDBUT命令 VBA代码 Private Sub CommandButton1_Click() Dim ps As Integer Dim pe As Integer Dim srcs As Integer Dim srce As Integer Dim i As Integer Dim j As Integer Dim m As Integer Dim pname As Variant Dim pn…

力扣刷题--442. 数组中重复的数据【中等】

题目描述 给你一个长度为 n 的整数数组 nums &#xff0c;其中 nums 的所有整数都在范围 [1, n] 内&#xff0c;且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数&#xff0c;并以数组形式返回。 你必须设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间&am…