InfluxDBがout of memory (OOM)エラーで終了してしまう。解決策を知りたい(インフラ管理者向け)

InfluxDBサービスがout of memory (OOM)エラーで終了し、リスタートしても解決しない場合、シリーズファイルが肥大化している可能性があります。以下の操作を行って、シリーズファイルをコンパクト化してください。

  1. 安全のため、InfluxDBデータのバックアップを作成します。バックアップディレクトリは任意のディレクトリで問題ありません。

    $ mkdir /tmp/influxdb_backup
    $ influxd backup -portable influxdb_backup/
    :
    :
    
  2. シリーズファイルをコンパクト化するため、以下コマンドを実行します。-datadir-waldir には実際のデータディレクトリとWALディレクトリのパスを指定してください。

    # systemctl stop influxdb
    # influx_inspect buildtsi -compact-series-file -datadir /data -waldir /data
    # systemctl start influxdb
    

上記を実行してもOOM エラーを繰り返す場合は、インスタンスタイプを変更してサーバーのRAMを一時的に増やし、InfluxDBを起動してください。起動後に動作が安定したらRAMのサイズは元に戻して構いません。

また、InfluxDBのログに、msg="Error compacting TSM files"error="rate: Wait(n=...) exceeds limiter's burst ..."のようなメッセージが出力されている場合は、RAMを増やすだけでなく設定ファイル内の設定値 compact-throughput-burstcompact-throughput-burst を一時的に増やしてInfluxDBを起動してください。起動後に動作が安定したらcompact-throughput-burst の値は元に戻して構いません。