前言:各大瀏覽器最大socket連接數
- IE 6個
- chrome 256個
- Firefox 200個
- safari 1273個(MAC版本)
問題:以google爲例
在開發調試websocket的時候,去瀏覽器模擬了ws請求,測試服務器請求量,發現只有255個成功,之後所有請求全部失敗,經各種考證發現,不是服務器問題,而是瀏覽器最大併發請求量爲256。
原因:
調試發現發起2000個請求後報錯,提示併發量太大,於是翻閱nodejs 查看關於所有請求線程併發相關內容,發現http.request() 使用的默認 http.globalAgent 的選項均爲各自的默認值
- keepAlive : 保持 socket 可用即使沒有請求,以便它們可被將來的請求使用而無需重新建立一個 TCP
連接。默認爲 false。 - keepAliveMsecs :當使用了 keepAlive 選項時,該選項指定 TCP Keep-Alive 數據包的
初始延遲。 當 keepAlive 選項爲 false 或 undefined 時,該選項無效。 默認爲 1000。 maxSockets
每個主機允許的最大 socket 數量。 默認爲 Infinity。 - maxFreeSockets 在空閒狀態下允許打開的最大 socket 數量。 僅當 keepAlive 爲 true
時纔有效。 默認爲 256 但是並沒有爲koa開啓keepAlive 所以不會是原始globalAgent
的問題,使用多瀏覽器請求,每次200個是可以的,服務端線程池也沒有報錯,所以判斷是瀏覽器限制每次併發請求不能大於256個線程。