http://www.bubuko.com/infodetail-769475.htmlphp
查看了core文件,反覆理清程序的思路,都找不到問題點。更讓我費解的是,經過註釋部分代碼(都是局部變量相關的),結果程序變成socket鏈接到達1500左右時發生段錯誤。html
後來想到試試是否是select有問題,模擬程序不調用select,所有采用阻塞的socket,結果測試到10000個socket鏈接都沒有問題。app
最後在網上看到select中限定的fd的值最大值是FD_SETSIZE(個人環境下是1024),而不是個數。socket
也有人持反對意見,好比對值爲1025的fd進行select也沒問題。對此我沒有測試,但結合個人實際狀況是,對超過1024的fd進行select,問題不能馬上暴露(我都一直到1500了),但可能會存在測試
相似越界訪問之類的問題(segment fault)。ui
以前還一直想不通,一直覺得是相似ulimit的限制沒有修改。但矛盾的是相同的配置,用poll/epoll寫的服務端卻能夠測試到10K以上,如今終於瞭然。url