すべてのプロダクト
Search
ドキュメントセンター

Elastic Container Instance:coredumpを使用してインスタンスプログラムの例外を分析する

最終更新日:Dec 28, 2024

プログラムが予期せず終了または応答を停止した場合、オペレーティングシステムはプログラムに割り当てられたランダムアクセスメモリ(RAM)の内容を記録し、後続のデバッグと分析のためにその内容をファイルに保存します。このプロセスはコアダンプと呼ばれます。このトピックでは、エラスティックコンテナインスタンス(ポッド)に対してcoredumpを有効にする方法について説明します。このようにして、coredumpによって生成されたコアファイルを表示および分析し、問題の原因を突き止め、例外が原因でコンテナが終了した場合にプログラムの例外を修正できます。

背景情報

Linuxシステムでは、プログラムが予期せず終了または応答を停止した場合、オペレーティングシステムはプログラムに割り当てられたランダムアクセスメモリ(RAM)の状態を記録し、その状態をファイルに保存します。このプロセスはコアダンプと呼ばれます。コアダンプから生成されたコアファイルを表示および分析して、問題の原因を特定できます。

次の図は、Linuxにおけるコアダンプを示すシグナルを示しています。Action列のシグナルの値はCoreです。

詳細については、コアダンプファイルを参照してください。

説明

デフォルトでは、過剰なディスク使用量によって引き起こされるサービスの可用性低下を防ぐために、エラスティックコンテナインスタンスではcoredumpは無効になっています。coredumpを使用するには、次のいずれかの方法を使用できます。

  • 方法1:coredump O&Mタスクを実行する

    coredumpを有効にすると、システムはO&Mタスクを生成します。コンテナが予期せず終了または終了した場合、システムはcoredumpをトリガーしてコアファイルを生成し、そのコアファイルをオブジェクトストレージサービス(OSS)バケットに保存します。

  • 方法2:コアファイルを保存するパスを指定する

    エラスティックコンテナインスタンスでは、外部ストレージデバイスを使用してコアファイルを保存できます。ストレージデバイスを指定すると、エラスティックコンテナインスタンスのcoredumpが自動的に有効になります。コンテナが予期せず終了または終了した場合、システムはcoredumpをトリガーしてコアファイルを生成し、そのコアファイルを指定された外部ストレージデバイスに保存します。

説明
  • 方法1は使いやすく、指定するリージョンとO&Mタスクの有効期限に制限があります。方法1は、一時的なプログラムのデバッグと診断に適しています。

    • 生成されたO&Mタスクは1回だけ実行できます。O&Mタスクが実行され、コアファイルが生成されると、coredumpは無効になります。O&Mタスクの有効期限は12時間です。

    • 中国(ウランチャブ)、中国(河源)、中国(広州)、中国(南京 - ローカルリージョン)、フィリピン(マニラ)、韓国(ソウル)、タイ(バンコク)のリージョンでは、coredump O&Mタスクを手動で実行することはできません。

  • 方法2では、外部ストレージデバイスが必要です。この方法を使用すると、プログラムが不安定な場合でもコアファイルを取得できます。ただし、プログラムが繰り返し再起動する場合、多数のコアファイルが生成される可能性があります。

方法1:coredump O&Mタスクを実行する

エラスティックコンテナインスタンスコンソールを使用して、coredump O&Mタスクを手動で有効にすることができます。

  1. エラスティックコンテナインスタンスコンソールにログオンします。

  2. インスタンスのcoredumpを有効にします。

    1. 左側のナビゲーションペインで、[コンテナグループ]をクリックします。[コンテナグループ]ページで、coredumpを有効にするインスタンスのIDをクリックして、インスタンスの詳細ページに移動します。

    2. O&Mタブで、コアダンプタブをクリックし、有効化をクリックします。

      coredumpを有効にすると、システムはO&Mタスクを生成します。coredumpがトリガーされる前は、タスクは保留中状態です。

      coredump-1

  3. coredumpをトリガーします。

    エラスティックコンテナインスタンスに接続します。コンテナで次のsleep 100コマンドを実行した後、Ctrlキーと\キーを同時に押して、coredumpをトリガーします。コアファイルが自動的に生成され、OSSバケットに保存されます。coredump2

  4. コアファイルをダウンロードします。

    coredumpがトリガーされ、システムがコアファイルを生成すると、O&Mタスクの状態は成功に変わります。[結果]列のダウンロードをクリックして、コアファイルをオンプレミスマシンにダウンロードします。

    coredump-2

    説明

    システムが応答しない場合は、ブラウザのWebサイトの権限設定を確認してください。

方法2:コアファイルを保存するパスを指定する

コアファイルは、オフラインで問題を分析するために使用されます。ほとんどの場合、コアファイルはコンテナのローカルストレージではなく、外部ストレージデバイスに保存されます。これにより、コンテナが終了した場合にコアファイルが失われるのを防ぎます。エラスティックコンテナインスタンスでは、コアファイルを保存するパスを指定できます。パスを指定すると、coredumpが自動的に有効になります。

重要

パスは縦棒(|)で始めることはできません。coredumpを使用して実行可能プログラムを設定することはできません。

次のコードは、Network Attached Storage(NAS)ファイルシステムを外部ストレージとして使用するサンプル構成を示しています。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: coredump-test
  labels:
    app: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx-test
      labels:
        app: nginx
        alibabacloud.com/eci: "true" 
      annotations:
        k8s.aliyun.com/eci-core-pattern: "/data/dump-a/core"    # コアファイルを保存するパスを指定します。
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80
        volumeMounts:
          - name: nas-volume
            mountPath: /data/dump-a/
      volumes:     # NASファイルシステムをマウントします。
        - name: nas-volume
          csi:
            driver: nasplugin.csi.alibabacloud.com
            fsType: nas
            volumeAttributes:
              server: "0389a***-nh7m.cn-shanghai.extreme.nas.aliyuncs.com"
              path: "/"
              vers: "3"
              options: "nolock,tcp,noresvport"

FAQ

エラスティックコンテナインスタンスコンソールでcoredumpがトリガーされ、O&Mタスクの[結果]列で[ダウンロード]をクリックした後、システムが応答しません。どうすればよいですか?

システムが応答しない場合は、ブラウザのWebサイトの権限設定を確認してください。たとえば、Google Chromeを使用している場合は、次の方法を使用してダウンロードを許可できます。

  1. エラスティックコンテナインスタンスコンソールで、ブラウザのアドレスバーにある浏览器图标アイコンをクリックし、サイトの設定を選択します。浏览器设置1

  2. 構成項目安全でないコンテンツの設定を許可に変更します。浏览器设置2