【发布时间】:2014-04-19 01:47:11
【问题描述】:
考虑一个微不足道的express 应用程序:
app.get '/hang', (req, res) ->
console.log 'Request ', n
n += 1
# res.send 200
哎呀,我不小心把res.send注释掉了,哦,好吧,让我们看看会发生什么!
如果我用浏览器点击/hang,它就会坐在那里旋转,这是有道理的。如果没有send,我们不会关闭连接(正确的假设?)。让我们看看如果我们用a bunch of simultaneous connections 打/hang 会发生什么:
$ ab -n 1000 -c 1000 http://localhost:3000/hang
Benchmarking localhost (be patient)
apr_socket_recv: Connection reset by peer (104)
该应用设法打印出几百个Request ns,然后就卡住了。
我的问题是:
- 这里发生了什么?
- 这些连接最终会被关闭吗?或者:
- 我的服务器在重新启动之前是否已被冲洗?
补充:
您可以将-r 传递给ab 以使其忽略套接字错误。
当我使用它时,我开始看到ab 列出了一些已完成的请求:
Completed 100 requests
Completed 200 requests
apr_pollset_poll: The timeout specified has expired (70007)
这可能是 node.js 关闭的连接吗?
【问题讨论】: