我正在考虑创建自己的简单负载测试,我可以通过多个请求(例如 100-1000 个并发用户)访问我的网站以查看它的性能。我想尝试 Node.js,但我不知道这是否是适合这项工作的错误技术,因为 Node.js 不使用线程?我可以使用 Node.js 使用的异步模型来模拟许多用户请求,还是更适合用其他语言(如 Ruby/.NET/Python)来做?
问问题
2719 次
3 回答
1
Node.js 应该非常适合这项任务。我在工作中这样做。您必须更改的一个关键部分是 http 套接字池。以下代码将完全禁用池,如果您愿意,可以让您的 Node.js 进程挨饿。
var http = require('http');
var req = http.request(..., agent: false)
您可以在http.Agent 文档中了解更多信息。
您对线程的关注是精明的,但即使您达到了这个限制(Node 非常擅长保持资源效率),解决方案也很简单:启动负载测试的多个实例(进程)。实际上,您可能必须完全使用多台机器才能正确模拟负载。
在任何情况下,使用 Ruby 或 Python 都不会自动获胜。异步编程是I/O 和网络绑定任务的理想选择,而 Node 在这方面表现出色。同样,虽然 Ruby 和 Python有第三方异步框架,但它们在定义上比 Node.js 中给出的标准异步框架更晦涩难懂。
于 2012-10-16T09:05:48.397 回答
1
Node 可以触发尽可能多的请求(尽管您可能需要更改 的默认值http:Agent
)。您更可能受到操作系统可以执行的操作的限制,而不是节点中固有的任何内容(当然,这些限制将适用于您使用的任何其他语言)。
于 2012-10-16T09:02:37.097 回答
0
使用nodeload创建负载测试很简单。
于 2013-02-08T21:13:02.530 回答