WRK高级应用简介:
基于事件机制的高性能http压力测试工具,除了能针对单个url进行测试外,最重要的就是能够构造不同的url、不同的参数进行测试,发送携带body的POST请求。
wrk 公共lua API
- init = function(args)
- request = function()
- response = function(status, headers, body)
- done = function(summary,latency, requests)
- 全局变量wrk
wrk = { scheme = "http", host = "localhost", port = nil, method = "GET", path = "/", headers = {}, body = nil }
lua脚本
wrk功能高级的地方在于使用luajit进行自定义功能扩展,使用自定义函数构造不同的请求场景,常用的函数有:
- function setup(thread) 在创建线程时调用,wrk会为每一个测试线程调用一次setup方法,并传入代表测试线程的对象thread作为参数。setup方法中可操作该thread对象,获取信息、存储信息、甚至关闭该线程。
- function init(args) 在线程启动时调用一次
- function delay() 在每次发送request之前调用
- function request() 用来生成请求,每一次请求都会调用该方法,所以不要在这里写入耗时的操作,如果复杂的请求,在init函数就构造好,这里直接引用。
- function response(status, headers,body) 在每次收到一个响应时调用;为提升性能,如果没有定义该方法,那么wrk不会解析headers和body
- function done(summary, latency,requests) 该方法在整个测试过程中只会调用一次,可从参数给定的对象中,获取压测结果,生成定制化的测试报告。
自定义脚本中可访问的变量和方法:
变量wrk是一个table类型的全局变量,若修改改table,则会影响所有的请求。
wrk = {}
function wrk.format(method, path, headers, bod