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

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.