考慮一個簡單的express應用:如何處理的Node.js未閉合的HTTP響應
app.get '/hang', (req, res) ->
console.log 'Request ', n
n += 1
# res.send 200
哎呦,我不小心把註釋掉res.send
,哦,讓我們看看會發生什麼!
如果我打/hang
與我的瀏覽器,它只是坐在那裏旋轉,這是有道理的。沒有send
我們沒有關閉連接(正確的假設?)。讓我們來看看,如果我們打/hang
與a bunch of simultaneous connections會發生什麼:
$ ab -n 1000 -c 1000 http://localhost:3000/hang
Benchmarking localhost (be patient)
apr_socket_recv: Connection reset by peer (104)
該應用程序管理打印出幾百Request n
秒,然後只是卡住。
我的問題是:
- 這裏發生了什麼?
- 這些連接最終會關閉嗎?或者:
- 是我的服務器現在用水管沖洗,直到它重新啓動?
附加:
你可以通過-r
到ab
把它忽略套接字錯誤。 當我使用,我開始看到ab
列出一些要求爲已經完成:
Completed 100 requests
Completed 200 requests
apr_pollset_poll: The timeout specified has expired (70007)
難道這是連接被關閉的Node.js?