問題点

AEM Java プロセスを停止する処理時間が長すぎます(10分以上)。

環境

原因

AEM のシャットダウンに時間がかかることが多くあります。AEM java プロセスを停止すると、AEM を起動している Apache Felix OSGi コンテナをシャットダウンする java hook を実行します。OSGi コンテナのシャットダウン中に、システムはすべての OSGi バンドルおよびコンポーネントを停止します。そのプロセスの一環として、様々なサービスが書き込み操作を終了し、開いているファイルハンドルを閉じ、すべてのアクティブ HTTP 要求が応答するまで待機します。
 
低速シャットダウンの最も一般的な原因は次のとおりです。

  • OSGi コンポーネントの deactivate メソッドは、実行に時間がかかります。
  • システムがシャットダウンすると、実行中のリクエストが長くなります。

解決策

低速シャットダウンの問題を解決するには、スレッドダンプを分析して、どのスレッドがシャットダウンを待機しているかを検出する必要があります。

次の手順に従います。

  1. この記事にある手順に従って、スレッドダンプを行う

  2.  TDAhttp://fastthread.io/または IBM のスレッド解析などのスレッドダンプ解析で、スレッドダンプを開きます

  3.  HTTP リクエストスレッドのスレッドダンプを、次のような名前の RUNNABLE 状態で検索します。

    • 次の名前の「qtp」で始まるスレッド
    "qtp1926827727-86864" #86864 prio=5 os_prio=0 tid=0x00007f320894a800 nid=0x79f0 runnable [0x00007f31d7109000]
       java.lang.Thread.State: RUNNABLE
    • または、名前に IP とリクエストラインを使用したスレッド:
    "10.25.10.11 [1457551498445] GET /content/dam/test.jpg HTTP/1.1" #38626 prio=5 os_prio=0 tid=0x00007fe5c854c800 nid=0x7f9c runnable [0x00007fe55f7f3000]
       java.lang.Thread.State: RUNNABLE
  4. スレッドの要求に加えて、「FelixStartLevel」という名前のスレッドを検索します。このスレッドは、すべての OSGi バンドルおよびコンポーネントの開始と停止を処理し、どのような内容がシャットダウンを待機するかを指示します。 

    "FelixStartLevel" #18 daemon prio=5 os_prio=0 tid=0x00007f32ad8c2800 nid=0x6992 runnable [0x00007f32946d7000]
       java.lang.Thread.State: RUNNABLE
  5.  スレッドダンプ全体にわたって、「FelixStartLevel」スレッドのスタックトレースでパターンを探します。スレッドの停止を停止するか、多数のスレッドダンプの間で特定の OSGi コンポーネントを非アクティブにするかどうかを確認します。「grep」などのツールを使用してこれを分析できます。例えば、SlingServletResolver OSGi コンポーネントが複数のスレッドダンプで非アクティブ化されている場合、以下のコマンドを使用できます。下のコマンドでは、スタックトレースで SlingServletResolver が使用されているスレッドスレッドダンプの数をカウントします。

    grep -A 50 FelixStartLevel jstack.* | grep SlingServletResolver | awk '{print $1 }' | uniq | wc -l
  6. 何が低速シャットダウンを発生させているか、アプリケーションの問題かどうかを判別します。AEM 製品コードが関連している場合は、AEM カスタマーケアにお問い合わせください。

    注意:

    スレッドダンプ分析の詳細については、この記事を参照してください。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー