2014-04-28 14 views
7

Ho impostato un nodo slave Jenkins su una macchina virtuale Windows Azure. Quando si costruisce su quel nodo, il progetto gira senza intoppi per circa 20-30 minuti dopo i quali la connessione viene interrotta. Sono stato sul nodo VM quando la connessione è stata interrotta e sembra che stia perdendo/reimpostando la connessione a Jenkins Master (anch'essa una macchina virtuale di Azure). Qualcuno ha avuto problemi simili ed è stato in grado di risolverlo? La traccia dello stack è la seguente. Qualsiasi aiuto sarebbe apprezzato.Problema di connessione con lo slave Jenkins su Windows Azure

Progress: | ===================== FATAL: hudson.remoting.RequestAbortedException: java.io.IOException: Impossibile interrompere Hudson. remoting.RequestAbortedException: hudson.remoting.RequestAbortedException: java.io.IOException: Impossibile interrompere a hudson.remoting.RequestAbortedException.wrapForRethrow (RequestAbortedException.java:41) a hudson.remoting.RequestAbortedException.wrapForRethrow (RequestAbortedException.java:34) a hudson.remoting.Request.call (Request.java:174) a hudson.remoting.Channel.call (Channel.java:739) a hudson.remoting.RemoteInvocationHandler.invoke (RemoteInvocationHandler.java:168) in com.sun.proxy. $ Proxy49.join (Origine sconosciuta) in hudson.Launcher $ RemoteLauncher $ ProcImpl.join (Launcher.java:951) in hudson.tasks.CommandInterpreter.join (CommandInterpreter.java:137) a hudson.tasks.CommandInterpreter.perform (CommandInterpreter.java:97) a hudson.tasks.CommandInterpreter.perform (CommandInterpreter.java:66) a hudson.tasks.BuildStepMonitor $ 1.Eseguire (BuildStepMonitor.java:20) a hudson.model.AbstractBuild $ AbstractBuildExecution.perform (AbstractBuild.java:745) a hudson.model.Build $ BuildExecution.build (Build.java:198) a hudson.model.Build $ BuildExecution.doRun (Build. java: 159) a hudson.model.AbstractBuild $ AbstractBuildExecution.run (Abstra ctBuild.java:518) a hudson.model.Run.execute (Run.java:1709) a hudson.model.FreeStyleBuild.run (FreeStyleBuild.java:43) a hudson.model.ResourceController.execute (ResourceController. java: 88) a hudson.model.Executor.run (Executor.java:231)

causato da: hudson.remoting.RequestAbortedException: java.io.IOException: Impossibile interrompere a hudson.remoting.Request. abort (Request.java:299) a hudson.remoting.Channel.terminate (Channel.java:802) a hudson.remoting.Channel $ 2.terminate (Channel.java:483) a hudson.remoting.AbstractByteArrayCommandTransport $ 1. terminare (AbstractByteArrayCommandTransport.java:72) a org.jenkinsci.remoting.nio.NioChannelHub $ NioTransport.abort (NioChannelHub.java:184) a org.jenkinsci.remoting.nio.NioChannelHub.run (NioChannelHub.java:563) a jenkins.util.ContextResettingExecutorService $ 1 .run (ContextResettingExecutorService.java:28) su java.util.concurrent.Executors $ RunnableAdapter.call (sorgente sconosciuta) su java.util.concurrent.FutureTask $ Sync.innerRun (sorgente sconosciuta) su java.util.concurrent .FutureTask.run (sorgente sconosciuta) su java.util.concurrent.ThreadPoolExecutor.runWorker (sorgente sconosciuta) su java.util.concurrent.ThreadPoolExecutor $ Worker.run (fonte sconosciuta) su java.lang.Thread.run (Fonte sconosciuta)

causato da: java.io.IOException: impossibile interrompere ... 9 more

causato da: java.io.IOException: Una connessione esistente veniva chiusa forzatamente dall'host remoto a sun.nio.ch .SocketDispatcher.read0 (metodo nativo) su sun.nio.ch.SocketDispatcher.read (sorgente sconosciuta) su sun.nio.ch.IOUtil.readIntoNativeBuffer (sorgente sconosciuta) su sun.nio.ch.IOUtil.read (fonte sconosciuta) su sun.nio.ch.SocketChannelImpl.read (fonte sconosciuta) all'indirizzo org.jenkinsci.remoting.nio.FifoBuffer $ Pointer.receive (FifoBuffer.java:136) all'indirizzo org.jenkinsci.remoting.nio.FifoBuffer.receive (FifoBuffer.java:306) a org.jenkinsci.remoting.nio.NioChannelHub.run (NioChannelHub.java:496) ... 7 più

risposta

3

inoltre sto installando Jenkins CI in Azure ed era ottenere questo stesso problema. In particolare, vorrei vedere questo errore nel log degli errori schiavo Jenkins:

SEVERE: I/O error in channel channel 
java.net.SocketException: Connection reset 

Per lavorare intorno ad esso, è necessario aumentare la frequenza con cui lo schiavo esegue il ping del padrone. È possibile farlo aggiungendo la proprietà di sistema Dhudson.slaves.ChannelPinger.pingInterval al file master jenkins.xml.

L'ho modificato per eseguire il ping ogni 2 minuti e il canale è stato in grado di mantenere la connessione senza rilasciarlo. XML è simile al seguente:

<arguments> 
    -Xrs -Xmx256m -Dhudson.slaves.ChannelPinger.pingInterval=2 
    -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle 
    -jar "%BASE%\jenkins.war" 
    --httpPort=8080 
</arguments> 

Per ulteriori informazioni è possibile vedere the related ticket.

+0

farmas, sai qual è l'intervallo di ping predefinito? – Ivan

+1

ha trovato il valore predefinito - 5 minuti. Altri parametri interessanti con cui giocare sono: hudson.remoting.Launcher.pingIntervalSec e hudson.remoting.Launcher.pingTimeoutSec. La lista completa è: https://wiki.jenkins-ci.org/display/JENKINS/Features+controlled+by+system+properties – Ivan

1

Se si dispone di una versione più recente di Jenkins (la nostra è 1.584), è possibile passare alla pagina di configurazione dei nodi per lo slave, fare clic sul pulsante Avanzate in Metodo di avvio e aggiungere -Dhudson.slaves.ChannelPinger.pingInterval=2 al campo Opzioni JVM.

Questo ha fatto il trucco per noi!

Problemi correlati