news 2026/3/9 13:46:29

对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/3/4 11:32:33

HoRNDIS完全指南:在macOS上实现Android USB网络共享的专业方案

HoRNDIS完全指南:在macOS上实现Android USB网络共享的专业方案 【免费下载链接】HoRNDIS Android USB tethering driver for Mac OS X 项目地址: https://gitcode.com/gh_mirrors/ho/HoRNDIS 在现代移动办公环境中,如何快速稳定地将Android设备的…

作者头像 李华
网站建设 2026/3/4 6:15:53

VSCode远程调试时文件不一致?教你4步快速定位并修复同步漏洞

第一章:VSCode远程调试的文件同步问题概述在使用 VSCode 进行远程开发时,开发者常通过 Remote-SSH、Remote-Containers 或 Remote-WSL 扩展连接到远程主机进行代码编辑与调试。尽管这种模式极大提升了跨平台开发效率,但随之而来的文件同步问题…

作者头像 李华
网站建设 2026/3/3 13:32:25

Q#量子计算开发实战(VSCode测试报告深度指南)

第一章:Q# 程序的 VSCode 测试报告在量子计算开发中,测试是确保 Q# 程序正确性的关键环节。Visual Studio Code(VSCode)结合 Microsoft Quantum Development Kit 提供了完整的测试支持,开发者可直接在编辑器中运行单元…

作者头像 李华
网站建设 2026/3/6 1:34:57

终极指南:快速掌握alive-progress自定义动画美化技巧

终极指南:快速掌握alive-progress自定义动画美化技巧 【免费下载链接】alive-progress A new kind of Progress Bar, with real-time throughput, ETA, and very cool animations! 项目地址: https://gitcode.com/gh_mirrors/al/alive-progress 想要让你的Py…

作者头像 李华