コンフィギュレーション・プロパティの概è¦?

wrapper.check.deadlock プロパティ

こã?®プロパティは、他ã?®プロパティとのçµ?み合わせでã€?

ãƒ?ãƒ?ドロãƒ?クしたスレãƒ?ドにつã�?て JVMをどのようにモニター?¼ˆ監視)するかを設定するために使われますã?? これは、何とか回避策がある場合にはã€? 難しいような潜在çš?な致命çš?な問題を検知して回避するのに、とても役に立ちますã??

スレãƒ?ドã?®ãƒ?ãƒ?ドロãƒ?ク・チェãƒ?クは、少なくとã‚?Javaバã?¼ジョン1.5の利用してã�?ることがå¿?要ですã?? JVMã�?けã?¯チェãƒ?クを無視しますã??

ãƒ?ãƒ?ドロãƒ?クのチェãƒ?クの処ç�?は、わりと高é?Ÿですがã€? 全てのスレãƒ?ドをä¸?時的にロãƒ?クしてスナップショãƒ?トをとりますã?®でã€? こã?®プロパティはãƒ?フォルトで「FALSE」になってã�?ますã??

設定例:(デãƒ?ドロãƒ?ク・チェãƒ?ク?¼šOFF?¼?
wrapper.check.deadlock=FALSE

設定例ï¼?

プロパティの詳細につã�?て下記をご覧ã�?ただきますがã€? 次のシンプルな例では、デãƒ?ドロãƒ?クの場æ‰?をログ化するよã�?にWrapperを設定してありã€? 即座にJVMをå?�起動しますã??

設定例ï¼?
wrapper.check.deadlock=TRUE
wrapper.check.deadlock.interval=60
wrapper.check.deadlock.action=RESTART
wrapper.check.deadlock.output=FULL

ãƒ?ãƒ?ドロãƒ?クって?¼?

è¤?数のスレãƒ?ドがリソースをロãƒ?クしてã�?るときにã€? 全てのスレãƒ?ドが無制限にå¾?ち状態になる状態になりã?? ãƒ?ãƒ?ドロãƒ?クが起きることがありますã??

ä¸?番シンプルな例だと、スレãƒ?ドAがオブジェクトAをロãƒ?クしてã�?る状態でã€? オブジェクトBのロãƒ?クを試みるケースのときにã€? そã?®間ã?�他ã?®スレãƒ?ドBがオブジェクトBをロãƒ?クした状態で オブジェクトAをロãƒ?クしよã�?とå¾?機してã�?るケースですã?? こã?®ケースではã€? スレãƒ?ドAは、オブジェクトBå¾?ちのためã€? オブジェクトAを決して開放されることはありませんã€? 同時に、スレãƒ?ドBは、オブジェクトAが有効になるã?®をå¾?ってã�?るためã?? オブジェクトBを永ä¹?にロãƒ?クしたままになるためã?? 両è€?とも決して前に進めるはずがありませんã€?

wrapper.check.deadlock.interval

?¼»wrapper.check.deadlock.interval?¼½ プロパティではã€? Wrapperがアプリケーションのãƒ?ãƒ?ドロãƒ?クを探ã�? インターバル?¼ˆä¸?定間隔ã?®周期)ã?®コントロールを可能にしますã?? æœ?短で?¼‘秒毎に?¼‘回のインターバルを設定できますがã€? ãƒ?フォルトではã€?60」(1å??あたり1回?¼‰ですã?? ä¸?般çš?に、状態が安定してã�?るとåˆ?かってã�?るアプリケーションの場合にはã€? こã?®ãƒ?ãƒ?ドロãƒ?ク・チェãƒ?クの頻度を大å¹?に下げることも良ã�?でしょã�?ã€?

設定例:(60秒毎ï¼?
wrapper.check.deadlock.interval=60

wrapper.check.deadlock.action

?¼»wrapper.check.deadlock.action?¼½ プロパティではã€? ãƒ?ãƒ?ドロãƒ?クを検知したときã?�Wrapperはどã�?するかã?? Wrapperの動作につã�?てのコントロールを可能にしますã?? ãƒ?フォルトã?®動作では、ã??RESTART」ですã??

設定例:(å?�起動するï¼?
wrapper.check.deadlock.action=RESTART

可能な動作ã?¯次のとおり?¼?

  • RESTART -

    カレンãƒ?JVMを停止して、新しい「起動ã?®試み?¼?invocation?¼‰ã?�ã?®再起動しますã??

  • SHUTDOWN -

    JVMを停止して、同様にWrapperも停止しますã??

  • DUMP -

    スレãƒ?ドã?»ãƒ?ンプを呼び出しますã?? 当然のことながら、デãƒ?ドロãƒ?クが永続してã�?るためã?? JVMがå?�起動するまでずっと、デãƒ?ドロãƒ?クしたスãƒ?ート(状態)が持続しますã?? つまりã?�スレãƒ?ドã?»ãƒ?ンプもまた各インターバル?¼ˆä¸?定間隔ã?®周期)ごとに呼び出されまã�? のでご注意くã�?さいã€?

  • DUMP_RESTART -

    スレãƒ?ドã?»ãƒ?ンプを呼び出しã?? カレンãƒ?JVMを停止して、新しい「起動ã?®試み?¼?invocation?¼‰ã?�ã?®再起動しますã??

  • DUMP_SHUTDOWN -

    スレãƒ?ドã?»ãƒ?ンプを呼び出しã?? JVMを停止して、同様にWrapperも停止しますã??

  • NONE -

    これは便利ですã?? なぜならã??高い数値を持つトリガーならã?? ã�?かなるトリガーもトリガーされることを避けることができるのでã€? because it will prevent any triggers with a higher number from being triggered.

wrapper.check.deadlock.output

?¼»wrapper.check.deadlock.output?¼½ プロパティではã€? ãƒ?ãƒ?ドロãƒ?クを検知したときã?�Wrapperがログ化する情報をコントロールを可能にしますã?? ãƒ?フォルトå?º力では、ã??FULL」ですã??

設定例:(完å?¨なフルログ?¼?
wrapper.check.deadlock.output=FULL

可能な出力レベルは次のとおり?¼?

  • FULL -

    JVMå†?部でWrapperManagerクラスがã?? ãƒ?ãƒ?ドロãƒ?クで呼び出されたスレãƒ?ドã?®完å?¨なスタãƒ?ク・トレース?¼ˆä¸?時記æ?¶の軌跡?¼‰を含ã‚? レポã?¼トを出力しますã??

    「FULL?¼ˆフル?¼‰ã?�ã?®出力例ï¼?
    INFO   | jvm 1    | WrapperManager Error: Found 2 deadlocked threads!
    INFO   | jvm 1    | WrapperManager Error: =============================
    INFO   | jvm 1    | WrapperManager Error: "Locker-2" tid=18
    INFO   | jvm 1    | WrapperManager Error:   java.lang.Thread.State: BLOCKED
    INFO   | jvm 1    | WrapperManager Error:     at org.tanukisoftware.wrapper.test.DeadLock.lockSecond(DeadLock.java:64)
    INFO   | jvm 1    | WrapperManager Error:       - waiting on <0x000000002fcac6db> (a java.lang.Object) owned by "Locker-1" tid=17
    INFO   | jvm 1    | WrapperManager Error:     at org.tanukisoftware.wrapper.test.DeadLock.lockFirst(DeadLock.java:83)
    INFO   | jvm 1    | WrapperManager Error:       - locked <0x0000000029c56c60> (a java.lang.Object)
    INFO   | jvm 1    | WrapperManager Error:     at org.tanukisoftware.wrapper.test.DeadLock.access$100(DeadLock.java:22)
    INFO   | jvm 1    | WrapperManager Error:     at org.tanukisoftware.wrapper.test.DeadLock$1.run(DeadLock.java:42)
    INFO   | jvm 1    | WrapperManager Error:
    INFO   | jvm 1    | WrapperManager Error: "Locker-1" tid=17
    INFO   | jvm 1    | WrapperManager Error:   java.lang.Thread.State: BLOCKED
    INFO   | jvm 1    | WrapperManager Error:     at org.tanukisoftware.wrapper.test.DeadLock.lockSecond(DeadLock.java:64)
    INFO   | jvm 1    | WrapperManager Error:       - waiting on <0x0000000029c56c60> (a java.lang.Object) owned by "Locker-2" tid=18
    INFO   | jvm 1    | WrapperManager Error:     at org.tanukisoftware.wrapper.test.DeadLock.lockFirst(DeadLock.java:83)
    INFO   | jvm 1    | WrapperManager Error:       - locked <0x000000002fcac6db> (a java.lang.Object)
    INFO   | jvm 1    | WrapperManager Error:     at org.tanukisoftware.wrapper.test.DeadLock.access$100(DeadLock.java:22)
    INFO   | jvm 1    | WrapperManager Error:     at org.tanukisoftware.wrapper.test.DeadLock$1.run(DeadLock.java:42)
    INFO   | jvm 1    | WrapperManager Error:
    INFO   | jvm 1    | WrapperManager Error: =============================
    STATUS | wrapper  | A Thread Deadlock was detected in the JVM.  Restarting JVM.
  • SIMPLE -

    JVMå†?部でWrapperManagerクラスがã?? ãƒ?ãƒ?ドロãƒ?クで呼び出されたスレãƒ?ドやオブジェクトã?®簡単な概要だけを含ã‚? レポã?¼トを出力しますã?? 多くの場合ã?�特によく知られた問題に関しては十å??ですã??

    「SIMPLE?¼ˆシンプル?¼‰ã?�ã?®出力ä¾?
    INFO   | jvm 1    | WrapperManager Error: Found 2 deadlocked threads!
    INFO   | jvm 1    | WrapperManager Error: =============================
    INFO   | jvm 1    | WrapperManager Error: "Locker-2" BLOCKED waiting on a java.lang.Object owned by "Locker-1"
    INFO   | jvm 1    | WrapperManager Error: "Locker-1" BLOCKED waiting on a java.lang.Object owned by "Locker-2"
    INFO   | jvm 1    | WrapperManager Error: =============================
    STATUS | wrapper  | A Thread Deadlock was detected in the JVM.  Restarting JVM.
  • NONE -

    JVMå†?部でWrapperManagerクラスがã?? 全ての出力を抑えますã?? これはシスãƒ?ãƒ?製品ã?®利用に向いてã�?ますã?? 問題ã?¯把握しておりã€? たくさんのログæƒ?報を望まなã�?、あるいは、保持するå¿?要がなã�?、ケースに適してã�?ますã?? そã?®他ã?®選択として、Wrapperプロセスはã€? トリガーされã�?アクションã�? 発生した理由を提供するためにã€? 常にシングル・エントリをログ化してã�?きますã??

    「NONE?¼ˆなし)ã?�ã?®出力ä¾?
    STATUS | wrapper  | A Thread Deadlock was detected in the JVM.  Restarting JVM.