我正在考虑创建自己的简单负载测试,在那里我可以通过多个请求(例如100-1000个并发用户)访问我的网站,看看它是如何执行的。我想尝试Node.js,但我不知道这是否是错误的技术,因为Node.js不使用线程? 我可以使用Node.js使用的异步模型,模拟许多用户请求,还是更适合使用其他语言(如Ruby / .NET / Python)?
答案 0 :(得分:1)
节点可以根据您的需要发出尽可能多的请求(尽管您可能需要更改http:Agent
的默认值)。您更有可能受到操作系统可以做的事情的限制,而不受节点中固有的任何内容的限制(当然,这些限制将适用于您使用的任何其他语言)。
答案 1 :(得分:1)
Node.js应该是完美的任务。我在工作中这样做。您必须更改的一个关键部分是http套接字池。以下代码剪切将完全禁用池,如果您愿意,可以让您饿死Node.js进程。
var http = require('http');
var req = http.request(..., agent: false)
您可以在http.Agent documentation找到更多信息。
您对线程的关注是精明的,但即使您达到了这个限制(Node非常擅长保持您的资源效率),解决方案也很简单:启动负载测试的多个实例(进程)。实际上,您可能必须完全使用多台机器才能正确模拟负载。
在任何情况下,您都不会通过使用Ruby或Python自动获胜。对于I / O和网络绑定任务,异步编程是理想,而Node则擅长于此。类似地,虽然Ruby和Python 具有第三方异步框架,但根据定义,它们比Node中给出的标准异步框架更加模糊。
答案 2 :(得分:0)
使用nodeload创建负载测试很简单。