压力测试笔记

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 9万链接 纯swoole server simple demo 资源耗费: CPU一直稳定 50%以下 内存2.8G(本机也有压测客户端 所以可能纯server在2G左右)

websocket反代压测笔记(自用)


目标:突破nginx单机反代65535限制(最终没足够精力实现 熬夜太晚了)


不做特殊处理情况下,nginx反代肯定不超过65535个(TCP网络四元组)


  1. 2台服务器:1台server+压测2w 一台压测4w
  2. nginx 总量7w的情况下 必定崩溃 收集log(方便复盘和观察)
  3. nginx处理虚拟IP


server架构


client -> nginx -> php swoole websocket


压测工具


go-stress-testing 直接使用(github)


https://github.com/link1st/go-stress-testing


日志收集


websocket.Dial ws://172.16.16.10: dial tcp 172.16.16.10:80: socket: too many open files


优化内核


websocket.Dial ws://172.16.16.10: read tcp 172.16.16.8:33482->172.16.16.10:80: read: connection reset by peer


https://www.cnblogs.com/xzkzzz/p/16005034.html


websocket.Dial ws://172.16.16.10:9501: dial tcp 172.16.16.10:9501: connect: cannot assign requested address


优化内核https://blog.csdn.net/weixin_43525993/article/details/123198990


net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
sysctl -p


测试数据


A机器-> 5w websocket连接 B机器 server (直连)


  1. 建立链接的速度越来越慢(单台机器 可能分配随机端口会越来越慢?)


  1. 9万链接 纯swoole server simple demo 资源耗费: CPU一直稳定 50%以下 内存2.8G(本机也有压测客户端 所以可能纯server在2G左右)


内网出包量13176个/秒


CPU MAX 65.85%


nginx 固定在2044个链接 上不去


# nginx keealive配置 
http {
  # 客户端连接的超时时间, 为 0 时禁用长连接,
  keepalive_timeout 120s;
  # 在一个长连接上可以服务的最大请求数目, 当达到最大请求数目且所有已有请求结束后, 连接被关闭, 默认为 100, 即每个连接的最大请求数
  keepalive_request 10000;
}
# nginx 单进程数量限制 worker_connections


其他一些参考文章(我自己也没有看完 而且有知识重复 只是收集)


-在 nginx 这里采用多个内网 IP,这些 IP 使用 proxy_bind 来指定。参考 https://nginx.org/r/proxy_bind


  • nginx 用 proxy_bind 这种方法最多能撑多少量级的长连接?如何克服 nginx中的临时端口耗尽问题?

https://www.nginx.com/blog/overcoming-ephemeral-port-exhaustion-nginx-plus




  • nginx 性能调优


Tuning NGINX for Performance
http://nginx.com/blog/tuning-nginx
https://www.cnblogs.com/clnchanpin/p/7026413.html
Ideal way to overcome port exhaustion/unix socket limit?
https://studygolang.com/resources/5916?fr=sidebar
使用 HAProxy 负载均衡300k并发tcp连接
https://www.sundayle.com/haproxy-optimization
Use HAProxy to load balance 300k concurrent tcp socket connections: Port Exhaustion, Keep-alive and others
https://www.linangran.com/?p=547
Nginx作为反向代理服务器是否可以突破单机65535TCP连接的限制?如果是,是如何实现的?
https://www.zhihu.com/question/306520501
Nginx 高级篇:单机并发 1 万 10 万次请求解决和优化方案
https://learnku.com/articles/42203
nginx 并发数问题思考:worker_connections,worker_processes与 max clients
https://blog.51cto.com/liuqunying/1420556
nginx tcp负载突破端口数量限制 proxy_bind split_client
https://www.codenong.com/cs105164127/
nginx代理websocket连接上限
https://blog.csdn.net/Wjhsmart/article/details/107385614

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
1月前
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
478 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
1月前
|
测试技术
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
本文是关于自动化测试项目实战笔记,主要介绍了如何测试用户注册功能,包括验证码错误、注册成功以及弹框处理的测试步骤和代码实现。
91 2
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
|
1月前
|
Java 关系型数据库 MySQL
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
这篇文章是关于自动化测试项目实战笔记,涵盖了JDK、Tomcat、MySQL、Jpress环境的安装和搭建过程,以及测试用例和常见问题总结。
52 1
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
|
1月前
|
安全
红队测试方法论-课程笔记
红队测试方法论-课程笔记
红队测试方法论-课程笔记
|
1月前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
|
1月前
|
计算机视觉
目标检测笔记(二):测试YOLOv5各模块的推理速度
这篇文章是关于如何测试YOLOv5中不同模块(如SPP和SPPF)的推理速度,并通过代码示例展示了如何进行性能分析。
95 3
|
1月前
|
人工智能 算法 测试技术
自动化测试项目实战笔记(二):解决验证码识别问题
这篇文章介绍了三种自动化测试中验证码识别的方法:使用Python的pytesseract和PIL模块、利用第三方API如万维易源,以及使用开源的ddddocr库,还提到了一些注意事项,比如如何获取验证码区域的截图。
73 2
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
67 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
1月前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
102 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
209 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
下一篇
无影云桌面