30 | 答疑(三)如何搭建测试的网络结构?
该思维导图由 AI 生成,仅供参考
问题一:如何搭建测试的网络结构?
- 深入了解
- 翻译
- 解释
- 总结
本文主要围绕OpenResty测试篇展开,作者回答了读者提出的五个问题。首先,作者解释了如何搭建测试的网络结构,建议在性能测试时排除网络干扰,可以选择将wrk和服务端程序部署在同一台性能较好的机器上,或者用专门的路由器搭建一个局域网。其次,作者指出`test::nginx`可以测试ssl相关功能,并提供了测试案例文件。然后,作者解释了DSL(领域专用语言)的概念及其在OpenResty中的应用。接着,作者分享了安装`test::nginx`的方法,并建议按照travis CI中构建的方法来使用和测试OpenResty。最后,作者提到ab测试工具并非最佳性能测试工具,而是根据HTTP协议版本选择使用ab或者weighttp作为压力测试工具。文章内容涵盖了网络结构搭建、SSL功能测试、DSL概念、`test::nginx`安装方法以及性能测试工具选择等方面,为读者提供了OpenResty测试相关的实用知识。
《OpenResty 从入门到实战》,新⼈⾸单¥59
全部留言(4)
- 最新
- 精选
- helloworldlocal table_nkeys = require "table.nkeys" foo = {1, 2, 3, "bar"} item_count = #foo item_count_ = table_nkeys(foo) 老师,这两种获取table元素个数的方法,哪个效率更高
作者回复: 对于这种请求,我更喜欢 # 操作符,table_nkeys里面还是有不少判断逻辑的。性能我没有测试,应该是#更好一些。
2019-08-021 - Geek_41dcba感谢老师,让我对openresty有了比较全面的认识。但目前在写测试用例跑CI时,还是有一些无从下 1. 某一个用例对系统环境有要求,比喻依赖时间,我想要模拟在一天中某段时间执行代码其他时间不执行,或者响应内容中表示时间字段的内容精度要求很高,如何去验证这个精度(我现在都做法是like方式去正则匹配,这个字段的内容是根据当前时间生成,猜测一个大概的时间) 2. 如何模拟一个用户请求,出现多级的upstream(模拟多级缓存不存在是服务端发起uostream的场景)
作者回复: 第一个问题,你的做法是正确的,在 OpenResty 中也是用正则来判断时间的。你可以看下 lua-nginx-module 中 012-now.t 这个测试案例的做法; 第二个,上游都是可以在测试案例中模拟出来的,比如:https://github.com/iresty/apisix/blob/master/t/APISix.pm#L79
2019-08-021 - helloworldngx.say(type(ngx))输出table ngx.say(cjson.encode(ngx))为什么无法序列化ngx,报错提示不能对函数做序列化。 老师,这个是什么原因呢
作者回复: 你是指为什么一个类型是 table,一个报错时候的类型是function? 首先 ngx 确实是一个 table,其次 cjson 里面报错的源码在这里 https://github.com/mpx/lua-cjson/blob/master/lua_cjson.c#L457: luaL_error(l, "Cannot serialise %s: %s", lua_typename(l, lua_type(l, lindex)), reason); 它是用 lua_typename(l, lua_type(l, lindex)) 来判断数据类型的。我估计 lua_type 判断 ngx 的时候出错了。但我并没有跟到代码中去确认,你可以看下具体的判断代码。
2019-08-04 - 猪小擎更好不是更换一项技术的理由,好得多才是,如果没有50%左右的提升,那么就没必要更换。2022-04-061