2

そのため、jnlp スレーブ エージェントを (Java Web Start 経由で) マスター ジェンキンス マシンに接続しようとしています。

jnlp スレーブ エージェントの tcp 接続用にポート 49187 を固定し、スレーブ マシンで開いています。接続しようとすると、ハンドシェイクを通過しますが、次のエラーで失敗します。

Aug 19, 2014 3:51:10 PM com.youdevise.hudson.slavestatus.SlaveListener call
INFO: Slave-status listener starting
Aug 19, 2014 3:51:10 PM com.youdevise.hudson.slavestatus.SlaveListener$1 run
SEVERE: Could not listen on port
java.net.BindException: Address already in use: JVM_Bind
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at java.net.PlainSocketImpl.bind(Unknown Source)
        at java.net.ServerSocket.bind(Unknown Source)
        at java.net.ServerSocket.<init>(Unknown Source)
        at java.net.ServerSocket.<init>(Unknown Source)
        at com.youdevise.hudson.slavestatus.SocketHTTPListener.waitForConnection
(SlaveListener.java:129)
        at com.youdevise.hudson.slavestatus.SlaveListener$1.run(SlaveListener.ja
va:63)
        at com.youdevise.hudson.slavestatus.Daemon.go(Daemon.java:16)
        at com.youdevise.hudson.slavestatus.SlaveListener.call(SlaveListener.jav
a:83)
        at hudson.remoting.UserRequest.perform(UserRequest.java:118)
        at hudson.remoting.UserRequest.perform(UserRequest.java:48)
        at hudson.remoting.Request$2.run(Request.java:326)
        at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecut
orService.java:72)
        at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at hudson.remoting.Engine$1$1.run(Engine.java:58)
        at java.lang.Thread.run(Unknown Source)

インバウンド、アウトバウンドの opne がありますが、なぜこのエラーに直面しているのかわかりません..何かアイデアはありますか?

提案された回答の出力は次のとおりです。

[root@ip-10-192-35-89 ~]# netstat -ntpl | grep 49187
tcp        0      0 :::49187                    :::*                        LISTEN      1054/java
[root@ip-10-192-35-89 ~]# ps -ef|grep 1054
jenkins   1054     1  2 Aug14 ?        02:56:02 /etc/alternatives/java -Djava.awt.headless=true -Xmx2048m -XX:MaxPermSize=512m -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --httpPort=7777 --ajp13Port=8009 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
root      2483  2463  0 19:18 pts/0    00:00:00 grep 1054
4

2 に答える 2

3

次の行から、一部のプロセスがすでにポート 49187 を使用しているようです。

SEVERE: Could not listen on port
java.net.BindException: Address already in use: JVM_Bind

次のコマンドを実行して、プロセス ID を取得します。

netstat -ntpl | grep 49187

出力からプロセス ID を取得し、次のコマンドを実行して、ポート 49187 を使用しているプロセスを確認します。その後、そのプロセスを強制終了して、JNLP スレーブ エージェントへの接続を試みることができます。

ps -ef | grep PID_from_above_output

例えば、

[root@jenkins gc]# netstat -ntpl | grep 1569
tcp        0      0 127.0.0.1:25       0.0.0.0:*    LISTEN      1569/sendmail
[root@jenkins gc]#
[root@jenkins gc]# ps -ef | grep 1569
root      1569     1  0 Jun26 ?        00:01:13 sendmail: accepting connections
root      8083  8059  0 21:35 pts/0    00:00:00 grep 1569

ご覧のとおり、sendmailプログラムはポート 1569 を使用してリクエストをリッスンしていました。

于 2014-08-19T16:11:07.987 に答える