博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wrk中的lua脚本(转)
阅读量:7010 次
发布时间:2019-06-28

本文共 2102 字,大约阅读时间需要 7 分钟。

  转载地址:http://www.tuicool.com/articles/IFjIJjU

  wrk是一款现代化的http压测工具,提供lua脚本的功能可以满足每个请求或部分请求的差异化。

wrk中执行http请求的时候,调用lua分为3个阶段,setup,running,done,每个wrk线程中都有独立的脚本环境。

wrk的全局属性

wrk = {  scheme  = "http",  host    = "localhost",  port    = nil,  method  = "GET",  path    = "/",  headers = {},  body    = nil,  thread  = 
,}

 

wrk的全局方法

-- 生成整个request的string,例如:返回-- GET / HTTP/1.1-- Host: tool.lufunction wrk.format(method, path, headers, body)-- 获取域名的IP和端口,返回table,例如:返回 `{127.0.0.1:80}`function wrk.lookup(host, service)-- 判断addr是否能连接,例如:`127.0.0.1:80`,返回 true 或 falsefunction wrk.connect(addr)

 

Setup阶段

setup是在线程创建之后,启动之前。

function setup(thread)-- thread提供了1个属性,3个方法-- thread.addr 设置请求需要打到的ip-- thread:get(name) 获取线程全局变量-- thread:set(name, value) 设置线程全局变量-- thread:stop() 终止线程

 

Running阶段

function init(args)-- 每个线程仅调用1次,args 用于获取命令行中传入的参数, 例如 --env=prefunction delay()-- 每个线程调用多次,发送下一个请求之前的延迟, 单位为msfunction request()-- 每个线程调用多次,返回http请求function response(status, headers, body)-- 每个线程调用多次,返回http响应

 

Done阶段

可以用于自定义结果报表,整个过程中只执行一次

function done(summary, latency, requests)latency.min              -- minimum value seenlatency.max              -- maximum value seenlatency.mean             -- average value seenlatency.stdev            -- standard deviationlatency:percentile(99.0) -- 99th percentile valuelatency(i)               -- raw value and countsummary = {  duration = N,  -- run duration in microseconds  requests = N,  -- total completed requests  bytes    = N,  -- total bytes received  errors   = {    connect = N, -- total socket connection errors    read    = N, -- total socket read errors    write   = N, -- total socket write errors    status  = N, -- total HTTP status codes > 399    timeout = N  -- total request timeouts  }}

 

例子

表单的提交

wrk.method = "POST"wrk.body = "" -- 直接写死,如果不需要请求数据的差异化wrk.headers["Content-Type"] = "application/x-www-form-urlencoded"-- 如果要实现每次都不一样的表单内容local queries = {    "language=php",    "language=java",    "language=lua"}local i = 0request = function()    local body = wrk.format(nil, nil, nil, queries[i % #queries + 1])    i = i + 1    return bodyend

 

你可能感兴趣的文章
微观经济学--经济学十大原理
查看>>
Tablayout ViewPage 使用示例
查看>>
linux下面MySQL变量修改及生效
查看>>
Android 6.0 如何默认打开user版本的root权限【转】
查看>>
TP框架在做上传时候提示:没有上传的文件!
查看>>
leetcode 485. Max Consecutive Ones
查看>>
IDEA使用笔记(九)——设置文件注释
查看>>
漫谈Java IO之基础篇
查看>>
CentOS 6.8 防火墙配置
查看>>
Spring Boot 2.0 整合 FreeMarker 模板引擎
查看>>
Java 知识点
查看>>
Nginx+Tomcat高性能负载均衡集群搭建
查看>>
BZOJ3573: [Hnoi2014]米特运输(树上乱搞)
查看>>
Dubbo的一些编码约定和设计原则
查看>>
IDA 操作记录
查看>>
告警系统需求分析 告警系统主脚本 告警系统配置文件 告警系统监控项目
查看>>
JavaServer Faces (JSF) with Spring
查看>>
知物由学 | 这些企业大佬如何看待2018年的安全形势?
查看>>
[转]Mongodb的下载和安装
查看>>
usb_submit_urb
查看>>