Windows サーバーで サービスから Jenkins を起動しようとしたときに起動しなかったときの対応
状況
- http://jenkins/restart とかを何回か実行した
- サービスでステータス確認したら 停止 になっている
- サービスから開始をクリックしてもステータスは一瞬 実行中 になるがすぐに 停止 になる
対応
- jenkins.err.log を確認
- エラーが出ている
警告: FAILED ServerConnector@8c1c9b{HTTP/1.1}{0.0.0.0:8090}: java.net.BindException: Address already in use: bind java.net.BindException: Address already in use: bind at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Unknown Source) at sun.nio.ch.Net.bind(Unknown Source) at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source) at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source) at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:321) at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at org.eclipse.jetty.server.Server.doStart(Server.java:366) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at winstone.Launcher.<init>(Launcher.java:152) at winstone.Launcher.main(Launcher.java:352) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at Main._main(Main.java:246) at Main.main(Main.java:91)
- Address already in use: bind なので、すでに他のプロセスがポートを使用している感じ
- https://issues.jenkins-ci.org/browse/JENKINS-15691 ここらへんにも同様の問題あり
- http://sinsengumi.net/blog/2011/01/windows%E3%81%A7%E3%81%A9%E3%81%AE%E3%83%9D%E3%83%BC%E3%83%88%E3%81%8C%E4%BD%95%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A7%E4%BD%BF%E7%94%A8%E3%81%95/ ここらへんを参考にして Windows サーバーで同一ポートを使用しているプロセスを探す
- java.exe が使用している
- この java のプロセスを終了させる
- jenkins をサービスから開始する
- サービスが 実行中 になることを確認
- Jenkins の画面がブラウザで表示されることを確認