「Solana ShredStream のレイテンシが増え続ける」原因と解決策

「Solana ShredStream のレイテンシが増え続ける」原因と解決策

2025.07.21
ERPCではSolanaのリアルタイムデータストリームを利用する多くのお客様から、「ShredStreamを利用しているとレイテンシが徐々に増加し、最終的には止まってしまう」というご相談をいただいています。
この記事では、この問題が発生する主な原因とその解決策を分かりやすく解説し、実際のパフォーマンス向上を実現するための具体的な方法を紹介します。

なぜShredStreamのレイテンシが増え続けるのか?

ShredStreamは現在、ほぼすべてのリアルタイムデータをフィルターなしで配信しています。このため、クライアントの処理能力が不足するとデータが滞留し、レイテンシが徐々に増大します。
原因は大きく以下の2つです。

1. Node.js やシングルスレッドで処理している

初期のShredStream クライアントはTypeScriptでgRPCプロトコルを使い構築されました。しかし、現状フィルターが未実装なため、Node.js のようなシングルスレッド環境で利用すると、処理能力の限界に達し、レイテンシが増え続ける問題が確認されています。
同じマシンでRustクライアントを利用してもこの問題が起きないため、原因がシングルスレッド処理の限界であると特定しました。

解決策:NAPI-RSを使ったマルチスレッド化

これに対して私達は、NAPI-RSという技術を使い、Rustでマルチスレッド処理を行いつつ、TypeScriptから制御可能な環境を構築しました。これがSolana Stream SDKで、オープンソースで公開されています。
Node.jsやTypeScript環境で利用したい方はこちらのSDKをご利用ください。パフォーマンスをより追求したい場合は、Rustなどのネイティブかつマルチスレッド処理に対応した言語環境をおすすめします。

2. サーバー性能(特にCPUクロック数)が不足している

Solana ShredStream を活用したリアルタイムストリームアプリケーションは、通常、4コア16GB程度のスペックで十分動作しますが、CPUクロック数は非常に重要です。クロック数が低いと、レイテンシが徐々に増大する原因となります。
利益を求める場合、旧世代のCPUや多コアで低クロックのCPUが多く利用されるため、それでは十分なパフォーマンスが出ない可能性があります。例えば、第四世代のAMD EPYCでも84コアのような多コアCPUはベースクロックが約2.2GHzであり、多くの場合ターボブーストは提供されません。Solanaバリデータの最低推奨条件は2.8GHzのため、クライアントにおいてもそれ以上のクロックを推奨します。
また、VPSには「オーバーコミット」という技術があり、1台の物理サーバーを複数の仮想サーバーに分割して提供しています。オーバーコミットされた環境ではピークタイムなどに他ユーザーとのリソース競合が発生しやすく、利用パフォーマンスに影響が出やすくなります。

解決策:最新世代のハイクロックCPUを使ったVPSを利用

ERPCでは、最新世代のAMD EPYC CPU(最大4.15GHz)のハイクロック環境をVPSとして提供しています。これにより、リアルタイム性を必要とするSolanaワークロードでもベアメタルに近いパフォーマンスを実現しています。
高クロックのVPSが今まで存在せず、リアルタイム性を求めるユーザーの最適解はベアメタルでしたが、ERPCのVPSはこの課題を解決しています。

ハイパフォーマンスな EPYC VPS のご利用をおすすめします

ERPC VPS
ERPCのVPSはSolanaのリアルタイムデータストリームに最適化されており、多くの高頻度トレーダーやプロジェクトからご好評をいただいております。
特にベアメタルほどのリソースが不要でありながら、高パフォーマンス環境を必要としているお客様に最適です。
ぜひ一度お試しください。
無料トライアルや詳しいご相談は、Validators DAO公式Discordで承っております。
ERPCは今後も皆様のご要望に合わせて研究開発を続け、パフォーマンス向上を支援してまいります。
引き続きどうぞよろしくお願いいたします。