咱還是閒話少說,直接切入正題。
起因:
一直用Tomcat,但是前幾天突然報錯:
java.net.BindException: Address already in use: JVM_Bind:80
第一反應就是80端口被佔用了。更改IIS端口,不工作! 停掉IIS,不工作! 停掉IIS Admin還是不工作!
見了鬼了,去網上搜一把,都說是IIS或者迅雷的問題。也有說是IE的問題(也不能說他錯,不過真TMD能扯淡)。我機器上沒有迅雷,於是決定自己動手了...
解決方案:
1.先用命令 netstat -ano 看一下各個端口占用和進程PID(80端口是被3296佔用) 。
2.然後在任務管理器裏,查看進程。(注意:默認情況下,進程的PID是不顯示的,你在菜單的查看->選擇列裏可以選上PID來顯示)
3、後面大家當然知道該怎麼做了。當然是大刀闊斧的,把這個進程關閉掉,然後一切正常!!
還有一種情況是系統安裝了SQL 2008數據庫佔用了
最近因爲項目需要,安裝了一個sql server2008,很多東西設置爲自動啓動,因爲項目需要佔用80端口,結果啓動項目時老報Jvm bind錯誤
然後就一個一個殺進程,最後排查到是一個名叫“sql server reporting services”搞的鬼,於是乎把這傢伙停掉或禁用就行了
SQL Server到底需要使用哪些端口?
來自:http://tech.it168.com/a2009/1202/818/000000818455_1.shtml
報表服務是通過Web的方式提供服務的,所以默認情況下報表服務使用的是80端口,當然用戶也可以修改報表服務的端口,在報表服務配置管理器中修改Web服務和報表管理器的端口,如圖所示:
SSB的端口配置,SSB如果涉及到計算機之間通過網絡進行通信,那麼就需要設置端點(EndPoint),在設置SSB的端點時,就需要制定偵聽的端口,比如我們創建這樣一個端點:
GO
CREATE ENDPOINT BrokerEndpoint
STATE = STARTED
AS TCP ( LISTENER_PORT = 4037 )
FOR SERVICE_BROKER ( AUTHENTICATION = WINDOWS ) ;
GO那麼我們就需要開發4037端口。
同樣的道理,如果我們要配置數據庫鏡像、SOAP訪問等,那麼也需要創建端點,同時開通端點中的端口。
除了以上介紹的端口外,如果要做數據庫複製之類的,需要在數據庫服務器上設置共享文件夾以方便多臺服務器的數據傳輸的話,那麼就還需要開通Windows共享的端口,如137、138、139、445等。
以上介紹了這麼多服務和端口,這需要根據實際的需要來設置,出於安全考慮可以將默認端口該爲自己的端口,而且SQL Server Browser服務不要打開。