node.js 服务器上的 Apachebench 在约 30 个请求后返回“apr_poll:指定的超时已过期 (70007)”

node.js 服务器上的 Apachebench 在约 30 个请求后返回“apr_poll:指定的超时已过期 (70007)”

我刚刚开始使用 node.js,并使用 ab 进行一些实验性负载测试,大约在 30 个请求左右时返回错误。

我发现其他页面显示的并发数字比我的好得多,例如: http://zgadzaj.com/benchmarking-nodejs-basic-performance-tests-against-apache-php

是否需要进行一些关键的服务器配置设置才能实现这些数字?

我已经查看了顶部的内存,并且在运行 ab 时仍然看到大量可用内存,同时还查看了 mongostat,没有看到任何可疑的东西。

我正在运行的命令以及错误是:

ab -k -n 100 -c 10 postrockandbeyond.com/
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking postrockandbeyond.com (be patient)...apr_poll: The timeout specified has   expired (70007)
Total of 32 requests completed

有人对我应该调查可能导致此问题的原因有什么建议吗?我在 osx lion 上运行它,但也在服务器上运行了相同的命令,结果相同。

编辑:我最终解决了这个问题。我使用的是 TTAPI,它通过 websockets 连接到 turntable.fm。在主页上,我每次请求都会连接。所以发生的事情是,在一定数量的连接之后,一切都会崩溃。如果您遇到同样的问题,请检查每次请求是否都在访问外部服务。

答案1

根据这篇博文,这是因为HTTP/1.0从 node 0.6+ 开始,apache bench 发出请求,导致 node 关闭连接。

我不知道为什么;它看起来有点像节点错误。

无论如何,简短的答案是使用其他东西。我一直在使用httperf无论如何这看起来都更好。

相关内容