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

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をロックã?—ã?ŸçŠ¶æ…‹ã?§ オブジェクトAをロックã?—よã?†ã?¨å¾…機ã?—ã?¦ã?„るケースã?§ã?™ã€‚ ã?“ã?®ã‚±ãƒ¼ã‚¹ã?§ã?¯ã€? スレッドAã?¯ã€?オブジェクトB待ã?¡ã?®ã?Ÿã‚?ã€? オブジェクトAを決ã?—ã?¦é–‹æ”¾ã?•れるã?“ã?¨ã?¯ã?‚りã?¾ã?›ã‚“。 å?Œæ™‚ã?«ã€?スレッドBã?¯ã€?オブジェクトAã?Œæœ‰åйã?«ã?ªã‚‹ã?®ã‚’å¾…ã?£ã?¦ã?„ã‚‹ã?Ÿã‚?ã€? オブジェクトBを永久ã?«ãƒ­ãƒƒã‚¯ã?—ã?Ÿã?¾ã?¾ã?«ã?ªã‚‹ã?Ÿã‚?ã€? 両者ã?¨ã‚‚決ã?—ã?¦å‰?ã?«é€²ã‚?ã‚‹ã?¯ã?šã?Œã?‚りã?¾ã?›ã‚“。

wrapper.check.deadlock.interval

ï¼»wrapper.check.deadlock.intervalï¼½ プロパティã?§ã?¯ã€? Wrapperã?Œã‚¢ãƒ—リケーションã?®ãƒ‡ãƒƒãƒ‰ãƒ­ãƒƒã‚¯ã‚’探ã?™ インターãƒ?ル(一定間隔ã?®å‘¨æœŸï¼‰ã?®ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã‚’å?¯èƒ½ã?«ã?—ã?¾ã?™ã€‚ 最短ã?§ï¼‘秒毎ã?«ï¼‘回ã?®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ?ルを設定ã?§ã??ã?¾ã?™ã?Œã€? デフォルトã?§ã?¯ã€Œ60ã€?(1分ã?‚ã?Ÿã‚Šï¼‘回)ã?§ã?™ã€‚ 一般的ã?«ã€?状態ã?Œå®‰å®šã?—ã?¦ã?„ã‚‹ã?¨åˆ†ã?‹ã?£ã?¦ã?„るアプリケーションã?®å ´å?ˆã?«ã?¯ã€? ã?“ã?®ãƒ‡ãƒƒãƒ‰ãƒ­ãƒƒã‚¯ãƒ»ãƒ?ェックã?®é »åº¦ã‚’大幅ã?«ä¸‹ã?’ã‚‹ã?“ã?¨ã‚‚良ã?„ã?§ã?—ょã?†ã€‚

設定例:(6�秒毎)
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.