news 2026/4/23 17:44:03

对HTTP高并发服务器测试报告

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
对HTTP高并发服务器测试报告

文章目录

  • 1、项目背景
  • 2、项目功能
  • 3、功能测试
      • 测试工具
      • 服务器启动设置
      • 3.1访问页面测试
      • 3.2 POST请求测试
      • 3.3GET请求测试
      • PUT请求测试
      • 3.5查询字符串打印
  • 四、边界测试
      • 4.1 长连接测试
      • 4.2 超时连接测试
      • 4.3 数据不完整测试
      • 4.4 业务处理超时测试
      • 4.5 多请求并发处理测试
      • 4.6 大文件传输测试
  • 5、性能压力测试
  • 6、总结

1、项目背景

该项目是根据陈硕大神的muduo网络库原理进行模仿开发的基于主从React模式的OneThreadOneLoop 的Linux网络服务器框架。用来帮助使用者进行一个快速的高性能并发服务器搭建。

2、项目功能

该项目目前支持常用的高频的HTTP交互请求,如:GET、POST、PUT、字符串访问、上传文件功能。所有业务通过高并发进行处理且具有异常场景的监测与容错处理,还可以对非活跃的链接进行及时的断联来节省资源。

3、功能测试

测试项测试目的测试结果
访问页面测试验证浏览器访问页面正确性成功
GET请求测试验证服务器正确处理请求并返回响应成功
POST请求测试验证服务器正确处理请求并提交数据成功
PUT请求测试验证服务器正确处理资源文件的修改成功
查询字符串打印测试验证服务器正确解析并打印URL查询参数成功

测试工具

Microsoft Edge 143.0.3650.80 (正式版本) (64 位)
PostMan 11.76.0

服务器启动设置

3.1访问页面测试

3.2 POST请求测试

3.3GET请求测试

PUT请求测试


采用Postman Put请求后,对应文件出现请求更改的文字。

3.5查询字符串打印

四、边界测试

测试场景测试描述测试结果
长连接超时测试客户端持续发送数据至超时时间,观察服务器是否正常关闭连接成功(超时后连接正常释放)
超时连接测试创建一个客户端,给服务器发送一次数据后,不动了,查看服务器是否会正常的超时关闭连接成功(正常超时关闭连接)
数据不完整测试发送不足1024字节的数据,观察服务器处理逻辑成功(未处理请求,超时关闭连接)
业务处理超时测试模拟单次业务处理超时,观察其他连接是否被拖累成功(释放操作延迟至任务池处理)
多请求并发处理测试一次性发送多条数据,验证每条请求均被独立处理成功(所有请求正常响应)
大文件传输测试上传一个1G的文件到服务器,验证服务器保存的文件与客户端上传的文件内容是否一致成功(客户端与服务器的文件内容相同)

4.1 长连接测试

创建一个客户端,设定好请求方法与路径后, 设置连接模式为keep-alive,查看服务器端是否会短时间内释放

服务器状态:

由时间可以看出,我设置了一直不断联已经运行了30分钟,由此看出长连接设置启动是有效的。

4.2 超时连接测试

服务器状态:

服务器已设置了10秒钟没有请求后释放。在client端发送第一次请求后,没有请求发送10秒后,服务器自动释放,客户端收到接收失败。

4.3 数据不完整测试

客户端测试设置:
在header中高设置自身发送数据长度(100),但本身数据长度不足

  1. 首先只发送一次数据

    服务器状态:
    在建立连接后,等待了9秒没有收到完整长度的数据进行了释放操作。
    客户端收到信息:
  2. 连续发送三次给服务器
    服务器状态:

客户端收到信息:

由两次测试可以看出结论:

  1. 如果数据只发送一次,服务器将得不到完整请求,就不会进行业务处理,客户端也就得不到响应,最终超时关闭连接
  2. 连着给服务器发送了多次 小的请求, 服务器会将后边的请求当作前边请求的正文进行处理,而后便处理的时候有可能就会因为处理错误而关闭连接

4.4 业务处理超时测试

当服务器达到了一个性能瓶颈,在一次业务处理中花费了太长的时间(超过了服务器设置的非活跃超时时间)。在一次业务处理中耗费太长时间,导致其他的连接也被连累超时,其他的连接有可能会被拖累超时释放。

假设现在 12345描述符就绪了, 在处理1的时候花费了30s处理完,超时了,导致2345描述符因为长时间没有刷新活跃度。

1.如果接下来的2345描述符都是通信连接描述符,如果都就绪了,则并不影响,因为接下来就会进行处理并刷新活跃度。

2.如果接下来的2号描述符是定时器事件描述符,定时器触发超时,执行定时任务,就会将345描述符给释放掉,这时候一旦345描述符对应的连接被释放,接下来在处理345事件的时候就会导致程序崩溃(内存访问错误)因此这时候,在本次事件处理中,并不能直接对连接进行释放,而应该将释放操作压入到任务池中,等到事件处理完了执行任务池中的任务的时候,再去释放。

服务器状态:

客户端状态:

4.5 多请求并发处理测试

一次性给服务器发送多条数据请求,然后查看服务器能否正确处理

服务器状态: 所有请求全部收到并且处理正确

4.6 大文件传输测试

发送一个1g大小的文本文件给服务器

传输完成后对比两个文件md5值
服务器端:

客户端:

5、性能压力测试

测试环境:
服务器:2核2G云服务器
客户端:服务器本地
工具:Webbench
测试方法:
60秒短时高并发测试:经测试4000并发量为最大并发量

6、总结

该高并发服务器核心功能覆盖HTTP标准方法、大文件传输、高并发处理及异常场景容错,具备稳定的性能表现(QPS达68,952)和可靠性,适用于高负载Web服务等场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:35:54

揭秘VSCode Azure QDK扩展开发:5个你必须知道的核心技巧

第一章:揭秘VSCode Azure QDK扩展开发的背景与价值量子计算作为下一代计算范式的前沿技术,正逐步从理论研究走向工程实践。随着微软推出Azure Quantum Development Kit(QDK),开发者得以使用Q#语言在云环境中构建和测试…

作者头像 李华
网站建设 2026/4/23 12:35:53

Q#与Python如何保持版本一致:90%新手忽略的自动同步技巧

第一章:Q#与Python版本同步的挑战与意义量子计算作为前沿计算范式,正逐步从理论走向工程实践。在这一进程中,微软推出的Q#语言为量子算法开发提供了专用编程环境,而Python则凭借其丰富的科学计算生态成为量子模拟与控制层的首选语…

作者头像 李华
网站建设 2026/4/23 16:07:31

实战前瞻:构建高安全、强协同的 Flutter + OpenHarmony 智慧金融移动银行平台(支持国产密码体系、生物认证与信创全栈适配)

实战前瞻:构建高安全、强协同的 Flutter OpenHarmony 智慧金融移动银行平台(支持国产密码体系、生物认证与信创全栈适配)💳 引言:当 Flutter 走进数字银行——让金融服务“既快又稳,既智又安” 在“数字中…

作者头像 李华
网站建设 2026/4/23 11:15:06

终极指南:如何快速获取完整的中国行政区划数据

终极指南:如何快速获取完整的中国行政区划数据 【免费下载链接】Administrative-divisions-of-China 中华人民共和国行政区划:省级(省份)、 地级(城市)、 县级(区县)、 乡级&#xf…

作者头像 李华
网站建设 2026/4/23 11:14:06

音乐云盘管理革命:解锁网易云音乐的隐藏力量

还在为云盘上传速度缓慢而焦虑?是否经常遇到想听的歌曲需要会员权限?这款创新的浏览器扩展脚本将彻底改变你的音乐管理方式,通过智能化的云盘操作和权限解锁,让音乐收藏变得轻松自如。 【免费下载链接】myuserscripts 油猴脚本:网…

作者头像 李华
网站建设 2026/4/23 11:14:16

RustDesk隐私模式终极指南:实现远程桌面的隐形操作

RustDesk隐私模式终极指南:实现远程桌面的隐形操作 【免费下载链接】rustdesk 一个开源的远程桌面,是TeamViewer的替代选择。 项目地址: https://gitcode.com/GitHub_Trending/ru/rustdesk 在当今数字化工作环境中,远程桌面技术已成为…

作者头像 李华