2012-04-08 1 views
1

したがって、埋め込みjettyとmaven app-assemblerプラグインを使用してWebサーバーを実行しています。私がapp-assemblerアプリを直接(rootとして実行して)呼び出すと、サーバは正常に起動します。 nohupで実行しても、Webサーバーは完全に正常に起動します。JavaサーバーがCentOS 5の起動時に掛かります

init.dスクリプト(Runlevels 235/Start pri 98/Stop pri 20)としてapp-assemblerスクリプトを登録し、serviceコマンドを使用してinit.dスクリプトを実行すると、起動時にWebサーバーがハングします。

アプリケーションがハングする場所は、Struts 2のコンベンションプラグインのクラスパススキャン中です。私は「-QUITを殺す」を使用してWebサーバを殺す場合

、それはUnixファイルシステムでスタックしているようなコードに見えます:私はいくつかの研究を行っている

"main" prio=10 tid=0x09add800 nid=0xb33 runnable [0xb7361000] 
    java.lang.Thread.State: RUNNABLE 
     at java.io.UnixFileSystem.getBooleanAttributes0(Native Method) 
     at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:228) 
     at java.io.File.isDirectory(File.java:754) 

、パフォーマンスの問題があるかもしれないと思えますNFS、Java、およびファイルシステムへのアクセス。

私が抱えている問題は、私たちがサーバー上でNFSを実行していないことと、同じユーザーが同じ方法でアプリを実行していることがわかっている限りです。

サービスのコマンドが動作する(スクリプトが起動する前に 'env -i'を実行している)場合は、スクリプトを直接実行してもハングしません。

この問題を解決するためのアドバイスや指導を探しています。私は、Sun(Oracleの)JDK 1.6.0_31

/usr/java/latest/bin/java -version 
java version "1.6.0_31" 
Java(TM) SE Runtime Environment (build 1.6.0_31-b04) 
Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode) 
+0

OpenJDKを使用していますか? – Quaternion

+0

私はSun JDKを使用しています。この情報を含めるように質問を更新しました – ArcSine

+0

OpenJDKを試してみてください。標準となるOracle/Sunのビデオがありました。私が知っているのは、私が使用しているすべてのもので、問題はないということです(Ubuntu 11.10/Netbeans/Webアプリケーション開発/ Glassfish) – Quaternion

答えて

0

を使用しています

アップデート(4/8/12)

だから、私はこの問題を考え出しました。スレッドがファイルシステム操作に詰まっているのが見えていた問題は、再帰的なシンボリックリンクが原因で、Javaが無限に続くことになります。シンボリックリンクに続いて、Unixシステムのルートからスキャンすると、同じ問題(100%CPU使用率、ファイルスキャンのハングアップ)が発生します。

問題は最終的に、サービススクリプトがrootから実行され、スクリプトの呼び出しを現在の作業ディレクトリから直接開始したことが原因でした。私はスタートアップスクリプトを変更して、実行する前にアプリのアセンブルされたスクリプトのルートを移動し、すべてうまくいきます。

関連する問題