压力测试笔记

简介: 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进行规格选择与性能压测。
目录
相关文章
|
4月前
|
架构师 测试技术 网络性能优化
dpdk课程学习之练习笔记七(vpp环境搭建及plugin demo测试)
dpdk课程学习之练习笔记七(vpp环境搭建及plugin demo测试)
170 0
|
4月前
|
存储 缓存 网络协议
dpdk课程学习之练习笔记二(arp, udp协议api测试)
dpdk课程学习之练习笔记二(arp, udp协议api测试)
67 0
|
1月前
|
iOS开发
iOS自动混淆测试处理笔记
iOS自动混淆测试处理笔记
12 0
|
4月前
|
测试技术 API Python
小红书API接口测试 | 小红书笔记详情 API 接口测试指南
随着互联网的发展,越来越多的应用开始使用API接口来提供服务。而API接口的测试也变得越来越重要。本文将介绍如何使用Python语言进行小红书笔记详情API接口的测试。
|
1月前
|
算法 测试技术 开发者
软件质量测试笔记-合工大
软件质量测试笔记-合工大
102 1
|
2月前
|
iOS开发
  iOS 自动混淆测试处理笔记
  iOS 自动混淆测试处理笔记
|
4月前
|
缓存 监控 网络协议
dpdk课程学习之练习笔记五(kni理解及测试)
dpdk课程学习之练习笔记五(kni理解及测试)
79 0
|
4月前
|
前端开发 测试技术 UED
前端知识笔记(三十三)———浅谈用户体验测试的主要功能
前端知识笔记(三十三)———浅谈用户体验测试的主要功能
39 0
|
5月前
|
消息中间件 Kafka Apache
kafka2.x常用命令笔记(一)创建topic,查看topic列表、分区、副本详情,删除topic,测试topic发送与消费
kafka2.x常用命令笔记(一)创建topic,查看topic列表、分区、副本详情,删除topic,测试topic发送与消费
214 0
|
6月前
|
iOS开发
iOS自动混淆测试处理笔记
自动混淆测试是针对 oc 类和oc方法这两个模块进行自动混淆ipa,并ipa安装到设备中运行,通过检测运行ipa包是否崩溃,来对oc类和oc方法进行筛选。如果崩溃,则该类名或方法名不可混淆。 当没有勾选oc类和oc方法,会自动测试所有的可执行文件中的oc类和oc方法名。如果有选中数据,则只会测试选中的数据集合。除了 oc 类和oc方法这两个模块会自动筛选测,其他的模块需要手动配置

热门文章

最新文章