2012-12-27 12 views
5

一度殺されると、サーバーポートを取得しようとしてもせずに、以降のすべての起動時にSeleniumサーバーがハングします。SIGTERMで殺された後、Selenium Serverがソケットにバインドされない

再起動すると問題が解決されます。別のユーザーとして実行するとセレンも同様に起動しますが、の後にはプロセスが終了すると、それ以上動作しなくなります。

これは、VirtualBox VMのLinux 2.6.32-5-amd64(debian squeeze)にあります。 workingwhen it's notのシステムコールのログを見ると、ソケットが拘束される前に一部のコンポーネントがロックアップしているようです。 selenium logはあまり役に立ちません。

出力はどちらかの兆候を与えるものではありません:

$ 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[/,/] 

答えて

10

これは、Javaの問題です。そのRNGは不必要に/dev/randomから読み取ります。 VMでは、ランダムプールは限られており、1回または2回実行すると使い果たされることがよくあります。何らかの理由で、セレン/埠頭のスタートアップの一部が問題のあるRNGを要求します。問題、advise Java to use /dev/urandom insteadを修正するには:

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

が正常に動作します。

+1

私は、この問題は/ dev/randomがどのようにシードされているか/占有されているかと関係していると思います。これは、キーボード/マウス、おそらくネットワークからの入力を受け取り、これから乱数生成を駆動します。そのような入力がない場合(特にVMの場合はキーボード/マウスの問題を理解できる)、/ dev/randomは入力を待ってハングします –

+1

知られていますが、よく見落とされる問題です! Good find ...そして確かに、 '/ dev/urandom'を' java.security.egd'の値として指定するのはうまくいきません...これは、Oracle/Sunの言うところのバグです。 – fge

+1

@BrianAgnewそうではありません。理論的には、あなたの説明は正しいですが、 '/ dev/urandom'を指定するとプログラムはまったく同じように動作します。あまり説明できない理由のために、Sun/Oracleはそれを '/ dev/random'にエイリアスし、結果として同じバグが現れます。 – fge

関連する問題