rippledサーバーが同期しない
このページでは、rippled
サーバーが正常に起動したのに、ネットワークに完全に接続できずに「connected」状態のままになっている場合の原因について説明します。(サーバーが起動中または起動直後にクラッシュした場合は、サーバーが起動しないを参照してください。)
以下の手順では、サポートされているプラットフォームにrippled
がインストールされていることを前提としています。
通常の同期動作
ネットワークとの同期は、通常はおよそ5分から15分で完了します。その間に、サーバーは次のようなさまざまなことを行います。
- 推奨バリデータリストを読み込み(通常は
vl.ripple.com
から)、信頼できるバリデータを判断します。 - ピアサーバーを検出して接続します。
- ピアから最新のレジャーのヘッダーと完全な状態情報をダウンロードし、それを使用してレジャーデータの内部データベースを構築します。
- 信頼できるバリデータをリッスンして、最近検証されたレジャーハッシュを見つけます。
- 新たにブロードキャストされたトランザクションを収集し、それを進行中のレジャーに適用します。
サーバーがこれらのタスクを行うときにネットワークに同調して対応できなかった場合は、サーバーはネットワークと同期しない状態になります。
最初のステップ: 再起動
多くの同期の問題は、サーバーを再起動することで解決できます。最初に同期が失敗した原因がどのようなものであっても、2回目では成功する場合があります。
server_infoメソッドでserver_state
がproposing
またはfull
以外の状態であると示され、server_state_duration_us
が900000000
(15分のマイクロ秒表記)より大きい場合は、rippled
サービスをシャットダウンしてから数秒間待ち、再起動してください。場合によっては、マシン全体を再起動します。
問題が解決しない場合は、このページに記載されている他の原因を確認してください。いずれも当てはまらないと思われる場合は、rippled
リポジトリに問題を登録 し、「Syncing issue」ラベルを追加します。
同期の問題のよくある原因
同期の問題の原因として最もよくあるのは、システム要件を満たしていないことです。要件を満たせない主な原因は次の3つです。
- 低速なディスク。 安定して高速な性能を発揮するソリッドステートディスク(SSD)が必要です。AWSなどのクラウドプロバイダーはディスク性能を保証しておらず、ハードウェアを共有する他のユーザーの影響を受ける可能性があります。
- 不十分なRAM。 メモリー要件はさまざまな要因に大きく左右されます。例えば、ネットワークの負荷やXRP Ledgerがどのように使われるかなど、予測しづらい要因もあるため、念のため最小システム要件よりも大きいメモリーを用意することをお勧めします。
- 品質の悪いネットワーク接続。 ネットワーク要件は、主にXRP Ledgerをユーザーがどのよう使うかによって左右されますが、接続が低速または不安定な場合、XRP Ledgerに追加された新しいトランザクションやデータとの同期がとれなくなる可能性があります。
同期の問題が解消されない場合は、サーバーがシステム要件を満たしているかもう一度確認してください。サーバーの使用方法によっては、「最小」要件よりも高い「推奨」要件を満たす必要があります。「推奨」要件を満たしていても、まだ同期ができない場合は、このページの他の原因を試してみてください。
バリデータリストを読み込めない
デフォルトの構成では、vl.ripple.com
から受信した推奨バリデータリストを使用します。このリストは、Rippleの暗号鍵ペアで署名されており、有効期限が組み込まれています。サーバーが何らかの理由でリストをvl.ripple.com
からダウンロードできない場合、サーバーは信頼できるバリデータのセットを選択せず、有効として宣言できるレジャーを決定できません。(Testnetや別の並列ネットワークに接続している場合、サーバーは代わりにそのネットワークの信頼できるバリデータのリストを使用します。)
server_infoメソッド応答のvalidator_list
ブロックは、バリデータリストの有効期限などのステータスを示します。リストがあるが期限切れである場合、サーバーは以前はそのバリデータリストのサイトに接続できていたものの、その後接続できなくなった可能性があります。その場合、現在のリストはサーバーがそれより新しいリストをダウンロードできなかったために期限切れとなった可能性があります。
また、validator_list_sitesメソッドを使用して、より詳細な情報を取得することもできます。応答内のバリデータサイトオブジェクトにlast_refresh_status
およびlast_refresh_time
フィールドがない場合、サーバーからバリデータリストのサイトへの接続に問題があることを示しています。ファイアウォールの設定をチェックして、ポート80(HTTP)または443(HTTPS)の発信トラフィックをブロックしていないことを確認してください。また、DNSがバリデータリストのサイトのドメインを解決できることも確認してください。
十分な数のピアがない
サーバーが十分な数のピアサーバーに接続していない場合、サーバーは十分なデータをダウンロードできず、ネットワークが新しいトランザクションを処理するときに同期がとれなくなる可能性があります。この問題は、ネットワーク接続の信頼性が低い場合や、十分な数の信頼できる固定ピアを追加せずにサーバーをプライベートサーバーとして構成している場合に起こる可能性があります。
peersメソッドを使用して、サーバーの現在のピアについての情報を取得します。ピアの数が10または11の場合、ファイアウォールが着信ピア接続をブロックしていることを示しています。ポートフォワーディングを設定して、より多くの着信接続を許可します。サーバーがプライベートサーバーとして構成されている場合は、構成ファイルの[ips_fixed]
スタンザの内容と構文を再度確認し、可能であればプロキシと公開ハブをさらに追加します。
データベースの破損
まれに、rippled
サーバーの内部データベースに保存されているデータが破損していることで同期の問題が発生する場合があります。サーバーが稼動中でなければ、ほとんどの場合、サーバーのデータベースを安全に削除できます。データの破損は、ディスクにコピーまたは書き込みするときに起こった一時的なハードウェア障害や、より深刻なディスク障害、別のプロセスがクラッシュしてディスクの誤った部分に書き込んだなど、さまざまな問題の結果として起こる可能性があります。
テストとして、十分な空き容量があれば、サーバーのデータベースへのパスを一時的に変更することで、現行のレジャーをダウンロードし直して、別の設定を保存できます。
注記: データベースのパスを変更した場合、サーバーはサーバーの現在のノードキーペアやピアリザベーションなど、保存されている一部の設定を読み込めません。データベースのパスを変更することでサーバーの同期の問題が解決した場合は、これらの設定の一部を再作成することをお勧めします。
-
rippled
サーバーが稼働中の場合は停止します。$ sudo systemctl stop rippled
-
新しいデータベースを格納するための新しい空のフォルダーを作成します。
$ mkdir /var/lib/rippled/db_new/ $ mkdir /var/lib/rippled/db_new/nudb
-
新しいパスを使用するように構成ファイルを編集します。
[node_db]
スタンザのpath
フィールドと[database_path]
スタンザの値を変更します。[node_db] type=NuDB path=/var/lib/rippled/db_new/nudb [database_path] /var/lib/rippled/db_new
The recommended installation uses the config file
/etc/opt/ripple/rippled.cfg
by default. Other places you can put a config file include$HOME/.config/ripple/rippled.cfg
(where$HOME
is the home directory of the user runningrippled
),$HOME/.local/ripple/rippled.cfg
, or the current working directory from where you startrippled
. -
rippled
サーバーを再起動します。$ sudo systemctl start rippled
新しいデータベースを使用してサーバーが同期に成功したら、以前のデータベースを格納していたフォルダーを削除できます。また、ハードウェア障害、特にディスクとRAMの障害を確認することもお勧めします。
関連項目
- コンセプト:
- チュートリアル:
- リファレンス: