2012-12-27 12 views
5

Dopo essere stato ucciso una volta, il server di selenio si blocca su tutti gli altri avviamenti senza nemmeno tentare di acquisire la porta del server.Selenium Server non si collega al socket dopo essere stato ucciso con SIGTERM

Il riavvio risolve il problema. L'esecuzione come utente diverso fa sì che il selenio si avvii di nuovo, ma dopo il che il processo viene eliminato, non funzionerà più.

Questo è su Linux 2.6.32-5-amd64 (debian squeeze) in una VM VirtualBox. Guardando un registro delle chiamate di sistema quando è working e when it's not, alcuni componenti sembrano bloccarsi prima che il socket sia collegato. Il selenium log non è di grande aiuto.

L'uscita non fornisce alcuna indicazione né:

$ java -jar selenium-server-standalone-2.28.0.jar 
Dec 27, 2012 5:41:35 PM org.openqa.grid.selenium.GridLauncher main 
INFO: Launching a standalone server 
17:41:35.703 INFO - Java: Sun Microsystems Inc. 14.0-b16 
17:41:35.704 INFO - OS: Linux 2.6.32-5-amd64 amd64 
17:41:35.737 INFO - v2.28.0, with Core v2.28.0. Built from revision 18309 
17:41:35.867 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub 
17:41:35.868 INFO - Version Jetty/5.1.x 
17:41:35.868 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver] 
17:41:35.869 INFO - Started HttpContext[/selenium-server,/selenium-server] 
17:41:35.869 INFO - Started HttpContext[/,/] 

risposta

10

Questo è un problema di Java; il suo RNG legge inutilmente da /dev/random. Su una VM, il pool casuale è limitato e spesso esaurito dopo una o due esecuzioni. Per qualche ragione, una parte del selenio/avvio Jetty richiede il RNG problematico. Per risolvere il problema, advise Java to use /dev/urandom instead:

java -Djava.security.egd=file:/dev/./urandom \ 
    -jar selenium-server-standalone-2.28.0.jar 

funziona bene.

+1

Credo che il problema riguardi il modo in cui/dev/random viene inserito/popolato. Prende input da tastiera/mouse e possibilmente rete, e guida la generazione del numero casuale da questo. Se non c'è un tale input (e per una VM in particolare è possibile capire il problema della tastiera/del mouse) allora/dev/random rimarrà in attesa di più input –

+1

Eh, problema noto ma spesso trascurato! Buona scoperta ... E sì, è davvero strano che la specifica di/dev/urandom' come valore per 'java.security.egd' non funzionerà ... Questo è un bug, qualunque cosa Oracle/Sun possa dire. – fge

+1

@BrianAgnew non è proprio così. Mentre, teoricamente, la tua spiegazione è corretta, il programma si comporterà esattamente allo stesso modo se specifichi '/ dev/urandom'. Per qualche oscura ragione, come ancora non spiegata, Sun/Oracle ha dato il suo alias a '/ dev/random', e come risultato apparirebbe lo stesso bug. – fge

Problemi correlati