指示による削除の設定
デフォルトの構成ファイルは、新しいレジャーバージョンが利用可能になるとrippled
が古いXRP Ledgerの履歴を自動的に削除するように設定されています。サーバがピーク時にハードウェアリソースの大部分を使用する場合は、オフピーク時に実行するようスケジュールされたコマンドからの指示があった場合にのみ、レジャーを削除するようにサーバを設定できます。これにより、オンライン削除がサーバのパフォーマンスに及ぼす影響はほとんどなくなります。
前提条件
このチュートリアルでは、ご使用のサーバが以下の条件を満たしていることを前提としています。
サポートされているオペレーティングシステムを使用している。Ubuntu Linux、Red Hat Enterprise Linux(RHEL)、CentOS
rippled
サーバがすでにインストールされており、オンライン削除が有効になっている。デフォルトの構成ファイルは、レジャーバージョンが2000個を超えるとオンライン削除を実行するよう設定されています。
cron
デーモンがインストールされており、実行されている。Ubuntu Linuxではデフォルトで
cron
デーモンが実行されます。RHELまたはCentOSでは、以下の
cronie
パッケージをインストールできます。$ sudo yum install cronie
選択した量の履歴をレジャーストアーに保管するのに十分なディスク容量がサーバにある。
各種設定で必要なストレージの容量についての詳細は、容量計画をご覧ください。指示による削除が有効な場合、削除が実行されるまでにサーバに蓄積可能な履歴の最大数は、
online_delete
設定で設定したレジャーバージョン数と、オンライン削除の指示の間隔を加算したものに相当します。サーバの使用率が最も低い時間帯を把握している。
設定手順
日次スケジュールで指示による削除は以下の手順で設定します。
rippled
の構成ファイルの[node_db]
スタンザでadvisory_delete
を有効にします。[node_db] # Other settings unchanged ... online_delete=300000 advisory_delete=1
- 指示された場合にのみオンライン削除を実行するには、
advisory_delete
を1
に設定します。(0
に設定すると、新しいレジャーバージョンが使用可能になると自動的にオンライン削除が実行されます。) online_delete
を、オンライン削除の実行後に維持するレジャーバージョンの最小数に設定します。オンライン削除が実行されるまでに蓄積される履歴は、この値よりも多くなります。
推奨インストールでは、デフォルトで
/etc/opt/ripple/rippled.cfg
という設定ファイルを使用します。その他の場所としては、$HOME/.config/ripple/rippled.cfg
($HOME
はrippled
を実行しているユーザのホームディレクトリです)、$HOME/.local/ripple/rippled.cfg
またはrippled
を起動した現在の作業ディレクトリがあります。- 指示された場合にのみオンライン削除を実行するには、
サーバに対してオンライン削除を指示するcan_deleteメソッドの実行をテストします。
このコマンドの実行には
rippled
コマンドラインインターフェイスを使用できます。例:$ rippled --conf=/etc/opt/ripple/rippled.cfg can_delete now
レスポンスは、サーバがそのレジャーストアーから削除するレジャーインデックスの最大値を示します。たとえば、以下のメッセージはレジャーインデックス43633667以下のレジャーバージョンを削除できることを示します。
{ "result": { "can_delete": 43633667, "status": "success" } }
サーバ内の 新しい 検証済みレジャーバージョンの数が、
online_delete
の設定以上となった場合にのみ、レジャーバージョンが削除されます。前のステップでテストした
can_delete
メソッドを、予定した時刻に実行するようにcron
デーモンを設定します。cron
設定を編集します。$ crontab -e
以下の例では、サーバ時刻で毎日1:05 AMにサーバが削除を実行するように設定されています。
5 1 * * * rippled --conf /etc/opt/ripple/rippled.cfg can_delete now
サーバで設定されているタイムゾーンに基づいてコマンドが実行されるようにスケジュールしてください。
ヒント:
advisory_delete
を無効にしている場合は、cron
ジョブをオンラインで実行するようにスケジュールする必要はありません。この場合、サーバの最も古いレジャーバージョンと現行の検証済みレジャーバージョンの差がonline_delete
の値以上である場合に、rippled
によりオンライン削除が実行されます。rippled
サービスを起動(または再起動)します。$ sudo systemctl restart rippled
server_infoメソッドを使用してサーバの
complete_ledgers
範囲を定期的に調べ、レジャーがスケジュール通りに削除されていることを確認します。オンライン削除の実行後には
complete_ledgers
の最小レジャーインデックスが増加します。サーバの使用率の状況と、一度に削除する履歴の量によっては、削除が完了するまでに数分間かかることがあります。
トラブルシューティング
オンライン削除の設定後にオンライン削除が実行されていないようである場合は、以下を試してください。
cron
ジョブを設定したユーザに、コマンドラインクライアントとしてrippled
サーバを実行できる権限があることを確認します。- cronジョブの構文とこのジョブの実行予定時刻を確認します。
rippled
実行可能ファイルがcron
設定で指定したパスで使用可能であることを確認します。必要に応じて実行可能ファイルの絶対パス(/opt/ripple/bin/rippled
など)を指定します。rippled
ログで、SHAMapStore::WRN
で始まるメッセージを調べます。このメッセージが出力されている場合、サーバがネットワークと同期していない状態になったためにオンライン削除が中断されている可能性があります。