Не удается перезапустить Jenkins на Windows Server 2012 (используется порт) - PullRequest
0 голосов
/ 04 октября 2019

Я запускаю Jenkins на Windows Server 2012, которая работает нормально, но я не могу перезапустить Jenkins, например, после обновления плагинов.

Ошибка, которую я получаю в jenkins.err.log, равна

SEVERE  winstone.Logger#logInternal: Container startup failed
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.openAcceptChannel(ServerConnector.java:342)
Caused: java.io.IOException: Failed to bind to 0.0.0.0/0.0.0.0:8080
    at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:346)
    at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:308)
    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:396)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at winstone.Launcher.<init>(Launcher.java:187)
Caused: java.io.IOException: Failed to start Jetty
    at winstone.Launcher.<init>(Launcher.java:189)
    at winstone.Launcher.main(Launcher.java:362)
    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:375)
    at Main.main(Main.java:151)

Так что, очевидно, порт, на котором работал Jenkins (8080), все еще используется после перезапуска.

Консоль сервера дает мне следующее:

Child process [5424 - C:\Program Files (x86)\Jenkins\jre\bin\java -Xrs -Xmx512m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox; default-src 'none'; img-src 'self'; style-src 'self' 'unsafe-inline';" -jar "C:\Program Files (x86)\Jenkins\jenkins.war" --httpPort=8080 --ajp13Port=-1 --webroot="C:\Program Files (x86)\Jenkins\war"] finished with 1

У меня естьпроверил, какой процесс использует порт 8080 с помощью netstat, но не может найти ничего. Я знаю, что могу изменить порт при запуске Jenkins с помощью флага «httpPort». Это (например, изменение порта на 8081) будет работать - пока я снова не перезапущу Jenkins, на этот раз будет использоваться 8081 (а также 8080 и все другие порты, которые я использовал ранее). Эту проблему можно решить только путем перезапуска сервера, после чего 8080 (и все остальные порты) снова будут доступны.

Оба «решения» (1. продолжайте изменять порт, 2. перезапускаете сервер) просто утомительныобходные пути для меня, так как я должен сообщить всем коллегам, какой порт используется в данный момент все время, или позволить администрации перезапускать сервер снова и снова. Флаг «--ajp13Port = -1» является попыткой исправить это, я также попытался отключить расширение «RunawayProcessKiller», как предложено в другом посте, но оба ничего не изменили.

Любая подсказкачтобы исправить это очень ценится.

...