咱还是闲话少说,直接切入正题。
起因:
一直用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服务不要打开。