短连接服务器压测-wrk

背景

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

老压测

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

新压测

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

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

定义请求流水线

例子

Lua 复制代码
-- example script demonstrating HTTP pipelining

function fillParameters(path, code, bodyContent)
   -- 指定header内容
   local headers = {}
   headers["Content-Type"] = "text/plain"
   headers["Code"] = code
   headers["TestJson"] = "1"
   headers["Account"] = "TRA1"

   -- 协议类型
   local method = "POST"
   return wrk.format(method, path, headers, bodyContent)
end

init = function(args)

   local r = {
        -- 登录
        fillParameters("/Proto/C2G", "12002", '{ "RpcId": 1, "Account":"TRA1", "Password":"123"}'),
         -- 同步时间
        fillParameters("/Proto/C2G", "12008", '{ "RpcId":2}'),
        -- ...
      }

   req = table.concat(r)
end

request = function()
   return req
end

-- 每次请求间隔
function delay()
   return math.random(5000, 6000)
end

Note:

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

相关推荐
老秦包你会16 分钟前
Linux课程五课---Linux进程认识1
linux·运维·服务器
等猪的风29 分钟前
openwrt作旁路由时的几个常见问题 openwrt作为旁路由配置zerotier 图文讲解
运维·服务器·网络
千码君20161 小时前
什么是数据链路层的CRC检测以及为什么要放到帧尾?
服务器·网络·网络协议·以太网·奇偶校验·crc检测·以太网帧
Qiuner1 小时前
软件设计师速通其一:计算机内部数据表示
服务器·数据库·信号处理
啊吧怪不啊吧2 小时前
Linux权限概念讲解
linux·运维·服务器
努力努力再努力wz2 小时前
【Linux实践系列】:进程间通信:万字详解命名管道实现通信
android·linux·运维·服务器·c++·c
Zfox_2 小时前
【Shell 脚本入门】轻松上手的实战指南
linux·服务器·运维开发·shell脚本
高效匠人3 小时前
Python中的Walrus运算符分析
java·服务器·python
遇到我又惊又喜3 小时前
DELL R740服务器闪黄灯不开机故障案例
运维·服务器
华青水上4 小时前
第一节:Linux系统简介
linux·运维·服务器