短连接服务器压测-wrk

news/2025/3/3 23:28:37/

背景

由于业务需要我们从原来的 长连接 转为 短连接,提高单服同时在线人数。

老压测

服务器编写机器人,编写一部分客户端逻辑(这里如果客户端严格使用mvc 模式,其实可以把 view 层换为 服务器测试代码层,而一般不同层之间通过事件机制,触发调用,这样下来可以减少重复代码编写)测试。测试周期长,需要写大量代码。

新压测

通过 wrk 在 linux 上可以开多个连接,模拟发送请求,轻轻松松压测。如果是业务测试,可能麻烦一些,需要编写相关的 lua 脚本,我们使用 scripts/pipeline.lua 改写,创建连接,测试。

wrk -v -t4000 -c4000 -d20m http://127.0.0.1:30001 --latency -s pipeline.lua

这样轻松创建 4000和连接并发处理

部分参数说明:

    -c, --connections <N>  Connections to keep open   打开连接数
    -d, --duration    <T>  Duration of test           持续时间
    -t, --threads     <N>  Number of threads to use   线程数
                                                      
    -s, --script      <S>  Load Lua script file       指定那个脚本
    -H, --header      <H>  Add header to request      
        --latency          Print latency statistics   
        --timeout     <T>  Socket/request timeout     
    -v, --version          Print version details 

脚本

参考 wrk/SCRIPTING文件,里面介绍了所有可以使用的 lua 函数,可以自定义改写

delay.lua

每次请求间隔

pipeline.lua

定义请求流水线

 例子

-- example script demonstrating HTTP pipeliningfunction fillParameters(path, code, bodyContent)-- 指定header内容local headers = {}headers["Content-Type"] = "text/plain"headers["Code"] = codeheaders["TestJson"] = "1"headers["Account"] = "TRA1"-- 协议类型local method = "POST"return wrk.format(method, path, headers, bodyContent)
endinit = function(args)local r = {-- 登录fillParameters("/Proto/C2G", "12002", '{ "RpcId": 1, "Account":"TRA1", "Password":"123"}'),-- 同步时间fillParameters("/Proto/C2G", "12008", '{ "RpcId":2}'),-- ...}req = table.concat(r)
endrequest = function()return req
end-- 每次请求间隔
function delay()return math.random(5000, 6000)
end

Note:

wrk 后跟 -s 引用脚本只能用一个,加多个 -s 执行不会报错,正常执行,但执行时只会使用其中一个lua脚本,如果要使用多个函数,可以将相关函数写在一个脚本中。


http://www.ppmy.cn/news/1576403.html

相关文章

三元组排序(acwing)c++

给定 NN 个三元组 (x,y,z)(x,y,z)&#xff0c;其中 xx 是整数&#xff0c;yy 是浮点数&#xff0c;zz 是字符串。 请你按照 xx 从小到大的顺序将这些三元组打印出来。 数据保证不同三元组的 xx 值互不相同。 输入格式 第一行包含整数 NN。 接下来 NN 行&#xff0c;每行包…

委托者模式(掌握设计模式的核心之一)

目录 问题&#xff1a; 举例&#xff1a; 总结&#xff1a;核心就是利用Java中的多态来完成注入。 问题&#xff1a; 今天刷面经&#xff0c;刷到装饰者模式&#xff0c;又进阶的发现委托者模式&#xff0c;发现还是不理解&#xff0c;特此记录。 举例&#xff1a; ​老板​…

自学微信小程序的第六天

DAY6 1、使用录音API首先需要通过wx.getRecorderManager()方法获取到一个RecorderManager实例,该实例是一个全局唯一的录音管理器,用于实现录音功能。 表32:RecorderManager实例的常用方法 方法名称 说明 start() 开始录音 pause() 暂停录音 resume() 继续录音 stop() 停止…

基于STM32的天气查询系统设计

摘 要 现代社会进入高速发展的时代&#xff0c;人们的生活节奏越加紧凑&#xff0c;但人们依旧向往未来美好的生活环境&#xff0c;智能家具市场应运而生。天气状况是人们对美好生活的最直观感受&#xff0c;很大程度的影响着人们对更好生活质量的追求。智能家居可以为人们提供…

004 rocketmq集群

1、集群模式 在RocketMQ中&#xff0c;集群的部署模式是比较多的&#xff0c;有以下几种&#xff1a; public class ConsumerDemo {public static void main(String[] args) throws Exception {DefaultMQPushConsumer consumer new DefaultMQPushConsumer("test-group&qu…

算法1-2 分数线划定

题目描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才&#xff0c;A 市对所有报名的选手进行了笔试&#xff0c;笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的 150% 划定&#xff0c;即如果计划录取 m 名志愿者&#xf…

优博讯,蓝禾,三七互娱,顺丰,oppo,游卡,汤臣倍健,康冠科技,作业帮,高途教育25届春招内推

优博讯&#xff0c;蓝禾&#xff0c;三七互娱&#xff0c;顺丰&#xff0c;oppo&#xff0c;游卡&#xff0c;汤臣倍健&#xff0c;康冠科技&#xff0c;作业帮&#xff0c;高途教育25届春招内推 ①优博讯 【岗位】Android系统开发工程师&#xff0c;GMS认证开发工程师&#xf…

蓝桥杯 灯笼大乱斗【算法赛】

问题描述 元宵佳节&#xff0c;一场别开生面的灯笼大赛热闹非凡。NN 位技艺精湛的灯笼师依次落座&#xff0c;每位师傅都有相应的资历值&#xff0c;其中第 ii 位师傅的资历值为 AiAi​。从左到右&#xff0c;师傅们的资历值逐级递增&#xff08;即 A1<A2<⋯<ANA1​&l…