鲲鹏服务器利用wrk工具测试Tomcat性能
本文介绍性能测试相关知识,列出了常用的http性能测试工具,介绍Tomcat,然后通过测试工具之一wrk对Tomcat进行性能测试。
性能测试介绍
1、 什么是性能测试
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
2、 性能测试的目标是什么
性能测试最终的目的,是找到系统的瓶颈,一般来说,是找到服务单机最大TPS(每秒完成的事务数)。需要注意的是,服务的TPS需要结合请求平均耗时来综合考虑。例如:服务TPS压到1000,平均请求耗时500ms,但是假如我们定的服务请求耗时不能超过200ms,那么这个1000的TPS是无效的。
很多场景下,服务都会设置超时时间,若平均耗时超过此超时时间,则可认为服务处于不可用状态。
常见的http性能测试工具
httpload、wrk、apache bench
工具 | 优点 | 缺点 |
httpload | 简单易用 | 压测结果指标较少 |
wrk | 简单易用,异步IO模型,能压到非常高的并发 | |
apache bench | 简单易用 |
通过优缺点介绍,我们看到wrk更胜一筹,下面我们采用wrk,对Tomcat进行性能测试。
Tomcat介绍
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。目前最新版本是10,不过是alpha版本。
Tomcat服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
tomcat官网首页:http://tomcat.apache.org/index.html
利用wrk对Tomcat进行压力测试
1、 安装准备
华为云购买一台鲲鹏服务器(wrk和Tomcat部署在同一台鲲鹏服务器上,当然也可以部署在不同的服务器上)
本文以云服务器KC1实例搭建,云服务器配置如表1-1所示。
表1-1 云服务器配置
项目 | 说明 |
规格 | kc1.large.2 | 2vCPUs | 4GB |
磁盘 | 系统盘:高IO(40GB) |
操作系统要求如表1-2所示。
表1-2 操作系统要求
项目 | 说明 | 下载地址 |
CentOS | 7.6 | 在公共镜像中已提供。 |
Kernel | 4.14.0-115 | 在公共镜像中已提供。 |
2、 部署tomcat
鲲鹏社区软件栈已经有部署文档,请参考
https://www.huaweicloud.com/kunpeng/software/tomcat.html
3、 部署wrk
鲲鹏社区软件栈已经有部署文档,请参考
https://www.huaweicloud.com/kunpeng/software/wrk.html
4、 性能测试:
终端输入如下命令:
wrk -t12 -c100 -d30s http://127.0.0.1:8080 或者
wrk -t12 -c100 -d30s http://云服务器公网IP地址:8080
说明:
模拟12个线程、100次连接、压力测试持续10秒,测试“http://127.0.0.1:8080”
页面的性能,其中8080为tomcat端口,wrk对本地安装的tomcat进行性能测试。
返回结果:
结果说明:
Avg Stdev Max +/- Stdev
(平均值) (标准差)(最大值)(正负一个标准差所占比例)
Latency:延迟
Req/Sec:处理中的请求数
514174 requests in 30.09s, 5.43GB read (30.01秒内共处理完成了514174个请求,读取了5.43GB数据)
Requests/sec: 17086.53 (平均每秒处理完成17086.53个请求)
Transfer/sec: 184.72MB (平均每秒读取数据184.72MB)
- 点赞
- 收藏
- 关注作者
评论(0)