Docker のメンテナンスとトラブルシューティング
Liferay Docker コンテナには、すぐに使用できるメンテナンスおよびトラブルシューティング用のツールが用意されています。 さまざまな環境変数を設定して、トラブルシューティングに役立つ設定を変更できます。 これらのうちの 1 つはコンテナのステータスを報告します。このステータスをチェックしてコンテナの状態を確認できます。 複数のノードがある場合は、ノードが 1 つずつ起動するように起動ロックを設定できます。 スレッド ダンプが作成される間隔を設定したり、コンテナーのライフ サイクルを調べたりすることができます。
コンテナのステータスを確認する
LIFERAY_CONTAINER_STATUS_ENABLED が true に設定されている場合、コンテナのステータスを確認するために別のスレッドがフォークされます。 コンテナのステータスは /opt/liferay/container_statusに書き込まれます。 このスレッドは、起動が成功する前は 3 秒ごとに、起動が成功すると 30 秒ごとに、 LIFERAY_CONTAINER_STATUS_REQUEST_URL への HTTP 応答をチェックします。 LIFERAY_CONTAINER_STATUS_REQUEST_URL は、 http:// でポート 8080 である限り、パブリックにアクセス可能な URL に変更できます。 リクエストのタイムアウトは、 LIFERAY_CONTAINER_STATUS_REQUEST_TIMEOUTで設定できます。 たとえば、デフォルト値が 10 の場合、スレッドは再度チェックする前に 13 秒間待機します。 返されたページに LIFERAY_CONTAINER_STATUS_REQUEST_CONTENT の文字列が含まれている場合(空でない場合)のみ、リクエストは成功したとみなされます。
container_status ファイルの潜在的な値は次のとおりです。
-
起動ロックを取得中: コンテナは起動のためにクラスターをロックしようとしています ( 起動ロックを参照)。
-
事前構成スクリプト: 「事前構成」スクリプトが実行されています。
-
configure: 構成ステップを実行しています。
-
起動前スクリプト: 「起動前」スクリプトが実行されています。
-
liferay-start: Liferay は起動中ですが、まだ正常に応答していません。
-
シャットダウン後: Liferay はシャットダウンされました。
-
失敗、HTTP 応答エラー、curl 戻りコード $: Liferay は起動しましたが、エラーが発生しました。 HTTP 応答と curl コマンドの戻りコードがファイルに書き込まれます。
-
失敗、コンテンツ不足: Liferay はエラーなしで応答しましたが、
LIFERAY_CONTAINER_STATUS_REQUEST_CONTENTで指定されたコンテンツがページに存在しません。 -
ライブ: すべて健全なようです。
Liferay サービスのステータスがライブから失敗に変わった場合、 LIFERAY_THREAD_DUMPS_DIRECTORYで設定されたディレクトリにスレッド ダンプが作成されます。
スタートアップロック
スタートアップ ロックを有効にする前に、コンテナー ステータス設定を有効にして適切に構成する必要があります。
2 つ以上の Liferay DXP ノードが同時に起動するのを回避するには、ノード間で共有ファイルシステムを使用して、1 つのノードが起動するときに信号を送信します。 この機能を活用するには、 LIFERAY_CONTAINER_STARTUP_LOCK_ENABLED 環境変数を trueに設定します。 これにより、現在初期化中のポッドのホスト名を含むロック ファイルが作成されます。 このファイルを作成する場所を選択するには、ディレクトリとファイル名を含む完全なファイル パスを LIFERAY_CONTAINER_STARTUP_LOCK_FILEに記述します。
起動ロックは、ファイルの場所が共有ファイル システム上にある場合にのみ使用できます。
最初の DXP ノードはロック ファイルを作成し、30 秒ごとに更新します。 他のノードがこのファイルを検出した場合、起動する前にファイルが削除されるまで待機します。 ファイルの内容は、アクティブに起動しているノードのホスト名です。 ファイルが 2 分以上変更されない場合、次にファイルをチェックするノードが通常どおり起動し、ファイルの内容を上書きします。
スレッドダンプ間隔の作成
LIFERAY_DOCKER_THREAD_DUMP_INTERVAL_FILE 変数は、ファイルへの有効なパスである必要があります。 このファイルに数値を書き込んでスレッド ダンプの間隔 (秒) を設定するか、空のままにしてこの機能をオフにします。 スレッド ダンプは LIFERAY_THREAD_DUMPS_DIRECTORY ディレクトリに作成されます。 したがって、 /opt/liferay/data/sre/thread_dump_interval が 3の場合、3秒ごとにスレッドダンプが作成されます。
これは、ファイルが共有ファイル システム上にある場合に、複数のクラスター ノードでスレッド ダンプを生成するのに便利なツールです。 コンテナの起動時にファイルがすでに作成されている場合は、起動時の問題を検出するためにも使用できます。
すぐに使えるコンテナスクリプト
コンテナ内にある便利なスクリプトのリストは次のとおりです。
-
generate_database_report.sh: パフォーマンスの問題を引き起こす可能性のあるテーブル (テンプレートなど) や、ロック、データベース サーバーの状態に関する情報を含むデータベース レポート HTML ファイルを生成します。 -
generate_heap_dump.sh: ヒープダンプを生成します。 パラメータの詳細については、-hを使用してください。 -
generate_thread_dump.sh: 設定された間隔でスレッドダンプを生成します。 デフォルトでは、3 秒の遅延で 20 個のスレッド ダンプが作成されます。 パラメータの詳細については、-hを使用してください。 -
inspect_document_library.sh: ファイルの種類とサイズを CSV 形式で表示するレポートを生成します。 -
probe_container_lifecycle.sh: コンテナの状態をタイムアウトなしで素早くチェックします。 コンテナのステータスがライブの場合にのみ、プローブは true を返します。 ステータスが 2 分以上更新されていない場合は失敗します (監視スレッドのチェックが失敗した場合にこれが発生することがあります)。ヒントKubernetes を使用している場合は、ライフサイクル プローブが推奨されます。
これらのコマンドは、実行時に出力用のファイルを生成します。 opt/liferay/data で実行し、出力ファイルを適切な場所に保存します。 これらのコマンドは、直接実行することで実行できます (例: probe_container_lifecycle.sh)。または、 nohup を使用してバックグラウンドで実行することもできます (例: nohup inspect_document_library.sh &)。 スクリプトがレポートを作成するのに時間がかかるため、これが推奨されます。
nohupを使用してスクリプトを実行すると、その結果は nohup.out ファイルに出力されます。
環境変数リファレンス
| 環境変数 | デフォルト値 | 目的 |
|---|---|---|
| LIFERAY_CONTAINER_STARTUP_LOCK_ENABLED | false | 2 つのノードが同時に起動するのを避けるには、 true に設定します。 |
| LIFERAY_コンテナ_スタートアップ_ロック_ファイル | /opt/liferay/data/liferay-startup-lock | ロック ファイルを作成する完全なファイル パス。 |
| LIFERAY_コンテナ_ステータス_有効 | false | コンテナの状態を継続的にチェックするスレッドを作成するには、 true に設定します。 |
| LIFERAY_CONTAINER_STATUS_REQUEST_CONTENT | "" | URL から返されたコンテンツにこの文字列が含まれている場合にのみ、ステータスは ライブ になります。 |
| LIFERAY_CONTAINER_STATUS_REQUEST_TIMEOUT | 10 | リクエストは失敗するまで、応答をこの秒数待機します。 |
| LIFERAY_CONTAINER_STATUS_REQUEST_URL | http://localhost:8080/c/portal/robots | スレッドは、ここで設定された URL への HTTP 応答をチェックします。 |
| LIFERAY_DOCKER_THREAD_DUMP_INTERVAL_FILE | /opt/liferay/data/sre/thread_dump_interval | このファイルには、生成された各スレッド ダンプ間の秒数が含まれています。 |
| LIFERAY_THREAD_DUMPS_DIRECTORY | /opt/liferay/data/sre/thread_dumps | スレッド ダンプ ファイルを作成する場所。 |