TeamCity Stopped Working After Installing Web Deploy
After the last reboot my TeamCity build server suddenly stopped working: 404 errors were returned instead of TeamCity dashboard. Since TeamCity Server service was still running, I checked the TeamCity log file in C:\TeamCity\logs\catalina.2015-09-09.log
:
Caused by: java.net.BindException: Address already in use: bind
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:437)
at sun.nio.ch.Net.bind(Net.java:429)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:473)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:646)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434)
at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:978)
The reason became obvious. Some other process was already listening at port 80 when TeamCity was starting up. It must have been something new I installed since the previous reboot. Only Web Deploy came to mind, maybe it installed IIS as a dependency? No, there was still no IIS or w3wp.exe
present.
It was time to run netstat -ano
to see open network connections. The following line piqued my interest:
TCP [::]:80 [::]:0 LISTENING 4
Indeed, there was a process listening on port 80, but PID 4
belongs to System
which isn't really helpful. Finally Antony's answer on StackOverflow brought me on the right track: supposedly there's a Web Deployment Agent Service which has a bad habit of taking over port 80. And it sounds somehow related to Web Deploy. A quick look at the services on the build server confirmed the suspicion. This service was running there. I stopped it and restarted the TeamCity Server service. A couple of seconds later the dashboard was responding again.
To prevent the problem from reoccurring after the next reboot, I still had to disable the Web Deployment Agent Service. I have no need for it; that wasn't the reason I was installing Web Deploy on the server. Problem solved.