原文鏈接:http://www.wenhq.com/article/view_374.html
tomcat報錯java.net.BindException: Address already in use,只是不能訪問tomcat了,稍等一會就正常了。
大概原因是短時間內new socket操作很多,而socket.close()操作並不能立即釋放綁定的端口,而是把端口設置爲TIME_WAIT狀態,過段時間(默認 240s)才釋放,(用netstat -na可以看到),最後系統資源耗盡(windows上是耗盡了pool of ephemeral ports ,這段區間在1024-5000之間; )
避免出現這一問題的方法有兩個,一個是調高你的web服務器的最大連接線程數,調到1024都還湊合,在tomcat中的web.xml文件中修改
maxThreads="1024" minSpareThreads="25" maxSpareThreads="100"
enableLookups="false" redirectPort="8443" acceptCount="500"
connectionTimeout="20000" disableUploadTimeout="true" />
No related posts.