Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何模拟对web服务器的大量并发请求?_Node.js_Tcp_Nginx_Debian_Stress Testing - Fatal编程技术网

Node.js 如何模拟对web服务器的大量并发请求?

Node.js 如何模拟对web服务器的大量并发请求?,node.js,tcp,nginx,debian,stress-testing,Node.js,Tcp,Nginx,Debian,Stress Testing,我想看看我的nginx+node.js设置能走多远,我能做些什么改变来挤出额外的性能。我无意中详细介绍了可以对操作系统进行的一些调整,以承受更多的请求(我不确定我是否完全理解) 假设我想看看它如何在一段时间内每秒处理60000个请求 我试过apachebench和。apachebench似乎仅限于本地3500个请求或其他请求。提高并发性只会以某种方式降低平均req/s。 我能够看到(声称)每秒5000个请求到一个使用beeswithmachineguns的测试页面,但这还远远不是我想要的。不过,

我想看看我的nginx+node.js设置能走多远,我能做些什么改变来挤出额外的性能。我无意中详细介绍了可以对操作系统进行的一些调整,以承受更多的请求(我不确定我是否完全理解)

假设我想看看它如何在一段时间内每秒处理60000个请求

我试过apachebench和。apachebench似乎仅限于本地3500个请求或其他请求。提高并发性只会以某种方式降低平均req/s。 我能够看到(声称)每秒5000个请求到一个使用beeswithmachineguns的测试页面,但这还远远不是我想要的。不过,这似乎有点像马车

有没有可靠的方法来模拟如此大量的请求?

您也可以试一试

你链接的那篇文章我看不错

生成60000 rq/s并同时回答它们将是一个问题,因为您肯定会耗尽资源。最好让其他计算机(可能在同一网络上)生成请求,并让您的服务器只处理这些请求

下面是一个示例,用于您所需的60000 rq/s的攻城配置,它将攻击您的服务器一分钟

# ~/.siegerc

logfile         = $(HOME)/siege.log
verbose         = true
csv             = true
logging         = true
protocol        = HTTP/1.1
chunked         = true
cache           = false
accept-encoding = gzip
benchmark       = true
concurrent      = 60000
connection      = close
delay           = 1
internet        = false
show-logfile    = true
time            = 1M
zero-data-ok    = false

如果您没有生成负载的基础设施,请租用它。一个非常好的服务是(我不属于他们)。他们有一个简单直观的界面,而且(最重要的是)他们几乎可以为您生成任何流量。

看起来很棒,我来试一试。在这样的负载下,服务器的哪个部分将首先失效?它是否会耗尽tcp套接字,或者仅仅是CPU/RAM负载等问题?我希望建立一个系统,可以无限期地处理这种类型的负载。我曾考虑将一台机器与nginx一起使用,仅用于负载平衡。这是可能的吗?您首先用完的是TCP套接字。nginx(正确配置)具有非常低的CPU和RAM占用空间。随着代码基数的增加,Node.js会增加,消耗掉您的CPU(以及以后的RAM)。在这里,其他语言可能会提供更高的性能(例如编译PHP、PHP\w OP cache、C/C++)。无限期将是不可能的,否则你会有一个系统,你可以很容易地出售给亚马逊,Facebook和谷歌。Nginx作为负载平衡器一点问题都没有。如果Nginx必须筛选传入的请求以将它们转移到其他10台服务器上,那么如果它被用作负载平衡器,它是否也会遇到TCP套接字的问题,或者我遗漏了什么?谢谢你的回答。你总是会遇到一些障碍。但是一台专用于单个nginx的机器为它提供了所有的操作系统资源。例如,您可以通过文件套接字(sshfs等)与上游服务器通信,而不使用任何TCP套接字(另外,它更安全)。