问题标签 [artillery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - NodeJS socket.io 无法处理性能测试中的到达率
在对我的 node.js socket.io 应用程序进行性能测试时,它似乎无法处理所需数量的并发 websocket 请求。
我正在使用以下规格在 Docker 环境中测试应用程序:
CPU:2 内存:4 GB
该应用程序被精简到只接受与 socket.io + express.js 的 websocket 连接的最低限度。
我在 artillery.io 的帮助下进行了测试,测试场景是:
报告:
所以我得到了很多 xhr poll 错误。当我监控 CPU + mem 统计数据时,CPU 的最高值仅为43,25%。内存只会高达4%。
即使我在100秒的时间跨度内将测试更改为20的到达率,我仍然会收到 XHR 轮询错误。
那么这些测试数字是否超出了具有此规范的 nodejs + socket.io 的能力,或者其他东西是否按预期工作?也许是码头环境或炮兵软件?
任何帮助或建议将不胜感激!
旁注:已经研究了 nodejs 集群以进行扩展,但希望首先充分利用一个进程。
更新 1
在使用此处找到的 websocket 压力测试脚本进行更多测试后:https ://gist.github.com/redism/11283852 当我使用高于 50 的到达率或想要建立更多连接时,我似乎达到了某种限制 + /- 1900。
直到 1900 个连接几乎每个连接都建立,但在这个数字之后,XHR 轮询错误呈指数增长。
docker 容器仍然没有高 CPU 或内存值。
XHR 轮询错误详细信息:
更新 2
在火炮测试中将传输更改为“websocket”可以提供更好的性能。
测试用例:
结果:到达率不再是问题,但我在 2020 年的连接中达到了某种限制。之后,它给出了“Websocket 错误”。
那么这是对 Windows 10 的限制吗?您可以更改吗?这是否限制了长轮询测试执行如此糟糕的原因
binary - Artillery.io - POST 二进制数据
您将如何通过带有二进制数据的炮兵发送 POST 请求?更具体地说,我正在尝试执行批处理请求并从文件中读取大炮的身体
我确实在文档中看到我需要使用自定义 JS 函数,但似乎无法让它正确地将值传回给炮兵:
https://artillery.io/docs/http-reference/#advanced-writing-custom-logic-in-javascript
javascript - 炮兵 - 多次测试 API
我正在尝试使用 Artillery 来测试我的一个 API 并解决一个潜在的错误。这是我的代码:
我决定模拟这种情况:
4 位用户将食物添加到篮子 3 秒(无延迟)。但对我来说最重要的是它们的并发性。炮兵是否有此功能的特定标志或属性?
node.js - “捕获”获得的 Artillery.io 值在“预期”中不可用
我对artillery.io 很陌生,我遇到了问题。我想从 JSON 响应中获取一个值并在 'expect' 子句中检查它,所以我这样做是这样的:
然后我这样称呼大炮:
然后我得到这样的东西:
我省略了其余的输出,因为它太大了。当它说“不等于,https://duckduckgo.com/209/Cao_Wei ”时,我觉得我的url变量是未定义的。
在像“$RelatedTopics[0].FirstURL”这样的引号上使用 JSONPath 会产生同样的问题。
我安装了期望(https://artillery.io/docs/plugin-expectations-assertions/)插件,如下所示:
请问,我在这里错过了什么?
csv - 如何修剪包含“\ n”字符的火炮字符串?
如文档所示,从 csv 中成功提取用户名和密码后,我注意到我的用户名采用以下格式:“\ntomer@mail.com”。如何擦除炮兵中的“\n”字符?
附言
检查您的 HTTP 请求的方法是(我无法找到这方面的文档):
在 cmd 中执行以下命令:
之后,每个常规的炮兵请求都会给你一个 http 调试模式,如下所示:
node.js - 无法读取炮兵脚本文件中的 CSV 文件
我正在对微服务进行负载测试,并在使用Artillery时遇到问题。读取 csv 文件时脚本失败。尝试从文件导入输入数据以创建 json 请求。
最简单的 script.yml:
同一文件夹中的input.csv文件:
用于执行的最简单命令:
错误堆栈跟踪:
最初我认为这是 Windows 的平台特定问题。然后在 OSX 上遇到了同样的问题。我在这里肯定会错过一些小而重要的事情。
npm - 在 CentOS 7 上运行大炮(使用 npm)失败
我正在尝试使用此处提供的指南在 CentOS 7 上运行的AeroGear UnifiedPush 服务器上运行负载测试。我在我的 ubuntu 台式机上做过一次,一切运行良好。但是,尝试运行artillery时出现语法错误。
这是安装的结果:
这是运行大炮的结果:
如果您分享您对这个问题的评论,我将不胜感激。
testing - 炮兵json输出不同
我正在使用大炮,并将结果导出为 json 文件-o result.json
问题是 json 文件结构似乎根据arrivalRate 不一致。
当 时arrivalRate=5
,中间结果的延迟分支包含 4 个字段(见下图)。
例如,当我将到达率设置为更高的值时,arrivalRate=20
json 响应只包括延迟,而没有其他 3 个字段。(见下图)。
我想获得第一张图片中的所有信息。
node.js - Artillery JavaScript 堆内存不足
将到达率从 10 更改为 100 后,laodtest 无法运行。
请求旧空间中的最后手段 GC [62621:0x102803200] 9498 毫秒:标记扫描 1392.3 (1401.5) -> 1392.3 (1401.5) MB,20.6 / 0.0 毫秒(平均 mu = 0.277,当前 mu = 0.001)旧空间中的最后手段 GC要求的空间
缓冲区 (sfi = 0x1da573a14251)>,string=0x1da597e082b9 ,encoding=0x1da5d92026f1 ) 2: 参数适配器帧: 1->2 3: setContentLength(aka setContentLength) [0x1da5201841e9] [/Users//.nv...
const*, bool) [/Users//.nvm/versions/node/v10.15.0/bin/node] 4: 0x1005742a2 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users//.nvm /versions/node/v10.15.0/bin/node] 5: 0x10057d7a4 v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users// .nvm/versions/node/v10.15.0/bin/node] 6: 0x10054f055 v8::internal::Factory::NewRawOneByteString(int, v8::internal::PretenureFlag) [/Users//.nvm/versions/node /v10.15.0/bin/node] 7: 0x1006811a8 v8::internal::String::SlowFlatten(v8::internal::Handlev8::internal::ConsString, v8::internal::PretenureFlag) [/Users// .nvm/versions/node/v10.15.0/bin/node] 8: 0x1001c6c1d v8::String::Utf8Length() const [/Users//.nvm/versions/node/v10.15.0/bin/node] 9: 0x10004eaac 节点::缓冲区::(匿名命名空间)::ByteLengthUtf8(v8::FunctionCallbackInfov8::Value const&) [/Users//.nvm/versions/node/v10.15.0/bin/node] 10: 0x10023170f v8::internal::FunctionCallbackArguments::Call(v8::internal: :CallHandlerInfo*) [/Users//.nvm/versions/node/v10.15.0/bin/node] 11: 0x100230c51 v8::internal::MaybeHandlev8::internal::Object v8::internal::(匿名命名空间) ::HandleApiCallHelper(v8::internal::Isolate*, v8::internal::Handlev8::internal::HeapObject, v8::internal::Handlev8::internal::HeapObject, v8::internal::Handlev8:: internal::FunctionTemplateInfo, v8::internal::Handlev8::internal::Object, v8::internal::BuiltinArguments) [/Users//.nvm/versions/node/v10.15.0/bin/node] 12: 0x1002302f0 v8::internal::Builtin_Impl_HandleApiCall(v8::internal::BuiltinArguments, v8::internal::Isolate*) [/Users//.nvm/versions/node/v10.15.0/bin/node] 13:0x38a6205dbe3d 中止陷阱:6
我的测试看起来像这样。
.yml
获取数据.js
artillery - 我们可以在正文中为炮兵中的发布请求提供 xml 请求吗?如果是,请给出请求示例
我们可以在正文中为炮兵中的发布请求提供 xml 请求吗?如果是,请给出请求示例。我需要 xml 请求来传递火炮的 post 请求