[项目前置]如何用webbench进行压力测试

2024-03-22 18:20

本文主要是介绍[项目前置]如何用webbench进行压力测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

测试软件

采用webbench进行服务器性能测试。

Webbench是知名的网站压力测试工具,它是由Lionbridge公司开发。

webbench的标准测试可以向我们展示服务器的两项内容:

每秒钟相应请求数每秒钟传输数据量

webbench测试原理是,创建指定数量的进程,在每个进程中不断创建套接字向服务器发送请求,并通过管道最终将每个进程的结果返回给主进程进行数据统计。

性能测试的两个重点衡量标准:吞吐量 & QPS

测试项目

[项目设计]仿muduo网络库实现高性能服务器组件-CSDN博客

 

测试环境

2核2G云服务器(腾讯云)

服务器程序采用1主3从reactor模式

环境问题

服务器和客户端在同一主机上,同主机将竞争CPU、内存、网络I/O等资源。导致实际测试结果不准

为了获得更准确的测试结果,最好在物理上分离的客户端和服务器之间进行压力测试。如果资源有限,可以考虑使用虚拟化技术或容器来模拟分离的环境,尽量减少客户端和服务器之间的资源竞争,并更准确地模拟真实世界的网络条件。进行正式的性能评估时,最好在尽可能接近生产环境的设置下进行测试。

环境配置

将程序运行起来,根据进程ID,在/proc⽬录下查看程序中的各项限制信息

其中,主要关注Max processes项,它代表当前用户的进程的最大数量

这是个限制,做测试应尽可能放开

第一步

修改配置文件/etc/security/limits.conf   

nofile是修改可打开文件数,nproc是修改进程数

文件末尾,可以直接按照我这样修改,没有的语句可以在末尾直接添加即可

第二步

修改配置文件:/etc/security/limits.d/20-nproc.conf

文件就这么多,后两行可能会被注释掉,注释掉代表不设置

取消注释并设置好就行

第三步

重启机器

再次cat /proc/进程id/limits   查看就好

测试选项

  • -c <客户端数>:并发连接总数。这个参数指定了将模拟多少个客户端同时向服务器发送请求。较高的数值将增加测试的负载。

  • -t <测试时间>:测试持续的时间,单位为秒。这个参数指定了压力测试将持续多长时间。

  • -f/--force:即使服务器回应为非“200 OK”的消息,也不停止程序。

  • -r/--reload:在测试过程中,不使用缓存,每次请求都发送“Pragma: no-cache”头。

  • -http09:使用 HTTP/0.9 协议进行请求。

  • -http10:使用 HTTP/1.0 协议进行请求。这是默认的测试协议。

  • -http11:使用 HTTP/1.1 协议进行请求。

  • -9:使用 GET 方法进行测试。这是默认的测试方法。

  • -1:使用 HEAD 方法进行测试。

  • -2:使用 OPTIONS 方法进行测试。

  • -3:使用 TRACE 方法进行测试。

  • --get:确保使用 GET 方法进行测试。

  • --head:确保使用 HEAD 方法进行测试。

  • --options:确保使用 OPTIONS 方法进行测试。

  • --trace:确保使用 TRACE 方法进行测试。

测试1

500个客户端连接的情况下测试结果

./webbench -c 500 -t 60 http://127.0.0.1:8085/

使用 500 个并发客户端,持续时间为 60 秒。

  • 速度:133837 页面/分钟,910962 字节/秒。
  • 请求:133837 成功,0 失败。

 

测试2

5000个客户端连接的情况下测试结果

./webbench -c 5000 -t 60 http://127.0.0.1:8085/

使用 5000 个并发客户端,持续时间为 60 秒。

  • 速度:114831 页面/分钟,782380 字节/秒。
  • 请求:114831 成功,0 失败。

 

测试3

10000个客户端并发连接的情况下测试结果

./webbench -c 10000 -t 60 http://127.0.0.1:8085/

使用 10000 个并发客户端,持续时间为 60 秒。

  • 速度:115772 页面/分钟,790500 字节/秒。
  • 请求:115772 成功,0 失败。

 

总结

当并发客户端数量从 500 增加到 5000 和 10000 时,服务器能够处理的页面速度(页面/分钟)有所下降。这表明随着并发请求数的增加,服务器的处理能力受到了一定的影响。

然而,即便在并发客户端数量增加的情况下,失败的请求数保持为 0,显示出服务器在高并发情况下依然能够稳定响应所有请求。

在并发数达到 5000 和 10000 时,服务器处理页面的速度略有下降,并在这两个级别之间保持相对稳定,表明可能达到了服务器的处理上限或其他瓶颈(如网络带宽、系统资源限制等)。

字节传输速率在测试中略有波动,但总体上与页面速度的变化趋势保持一致,说明服务器对大量请求的处理能力在达到一定并发数后会趋于稳定。

但是这个测试其实意义不大,因为测试客户端和服务器都在同一台机器上,传输的速度更快,但同时抢占cpu也影响了处理,最好的方式就是在两台不同的机器上进行测试,这里只是通过这个方法告诉大家该如何对服务器进行性能测试。

这篇关于[项目前置]如何用webbench进行压力测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

通过Spring层面进行事务回滚的实现

《通过Spring层面进行事务回滚的实现》本文主要介绍了通过Spring层面进行事务回滚的实现,包括声明式事务和编程式事务,具有一定的参考价值,感兴趣的可以了解一下... 目录声明式事务回滚:1. 基础注解配置2. 指定回滚异常类型3. ​不回滚特殊场景编程式事务回滚:1. ​使用 TransactionT

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

SpringSecurity6.0 如何通过JWTtoken进行认证授权

《SpringSecurity6.0如何通过JWTtoken进行认证授权》:本文主要介绍SpringSecurity6.0通过JWTtoken进行认证授权的过程,本文给大家介绍的非常详细,感兴趣... 目录项目依赖认证UserDetailService生成JWT token权限控制小结之前写过一个文章,从S

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意