一般的な Databases for Redis エラーを回避するにはどうすればよいですか?
Databases for Redis は、メモリー内のデータベースです。 これは、データの受け入れ、処理、および保管の方法が従来の永続データベースとは異なります。 以下の情報では、発生する可能性がある一般的なエラー、それらのエラーのいくつかの理由、およびそれらのエラーを修正するために適用できる解決策を中心に説明します。
エラー: Connection to master lost メッセージ
Databases for Redis は、2 つのメンバー (マスターとレプリカ) と 3 つの標識を使用して機能します。 以下の理由が、 connection to master lost メッセージの原因である可能性があります。
a. 1秒あたりの入出力操作(IOPS)が少ないため、マスターはビジー状態で、センチネルに応答しない。
b. ネットワーク待ち時間が原因で、標識はマスターと通信できません。
c. 定期保守アクティビティー。
d. マイナー・バージョンのアップグレード。
ソリューション
以下の解決策を試行して、エラーを修正してください。
a. ディスク・サイズを増やします。 1 GB は 10 IOPS に相当します。
b. 専用リソースの割り振りのために、分離されたコンピュートに移動します。
c. RAM サイズを増やします。
d. RETRY ロジックが必要であるため、これが実装されていることを確認してください。
e. レプリカは、数秒後に自動的にマスターにプロモートされます。
f. Redis インスタンスに memory eviction ポリシーまたは TTL ポリシーを実装します。
IBM® Cloud Databases はマスター・ノード上では何も実行しない。 必要に応じて、すべてのアクティビティーがレプリカ・ノードで完了し、マスターにプロモートされます。 データベースは、レプリカ・プロモーションが行われる前に、マスター・ノードを見つけるために 30 秒待機するように設定されています。
エラー: 非同期 AOF fsync に時間がかかりすぎています (ディスクがビジーですか?)
AOF は付加専用ファイルです。 これは、永続設定がオンの場合に Redis 永続ディスクに書き込まれるログです。
Redis はAOFファイルとRDBファイルを使用してログを書き込み、RDBはスナップショット用に使用する。
このエラーが表示される理由には、以下のようなものがあります。
a. IOPS が不十分であるため、 Redis はディスクに書き込むことができません。
b. バッチの実行と同時に Databases for Redis バックアップが実行されている可能性があります。
c. アプリケーションが Redis インスタンスに対して不明な API 呼び出しを行っている可能性があります。
メトリックに使用される PSYNC を除き、インスタンス内の他の API は要求されません。
ソリューション:
以下の解決策を試行して、エラーを修正してください。
a. ディスク・サイズを増やします。 ボールパークの推奨は、予想される量より 30% 多い量です。
b. Redis が最大容量に達している場合は、単一の Redis インスタンスを複数のインスタンスに分割し、アプリケーション・アーキテクチャーを調整します。
c. パーシスタンスが不要な場合は、それをオフにします。 代わりにキャッシュ・モードに変更してください。
ディスク・サイズはスケールダウンできませんが、メモリーはスケールダウンできます。 Redis はイン・メモリ・データ・ストアであるため、インスタンスのメモリを大幅に削減するとエラーが発生する可能性があるため、サイズを縮小する前に進行中のデータ・サイズを評価することをお勧めします。
エラー: インスタンスのスケーリングが停止しているか、予想よりも長い時間がかかっています
IBM Cloudを使用すると、データのニーズの増大に応じてインスタンスをスケーリングまたはサイズ変更できます。 UI、CLI、および API からの自動スケーリングと手動スケーリングを提供します。 ただし、インスタンスのサイズを変更する際には注意してください。 スケーリングに予想より長い時間がかかっている場合は、以下のいずれかの理由が考えられます。
a. インスタンスは既に最大のインスタンス (コア * 図) にあり、ワークロードを現在に移動するために使用できるより大きなクラスターはありません。 この場合、新しいクラスターが形成され、インスタンスが移動されます。これには数分かかることがあります。
b. メモリーが大幅に削減されました (例えば、16 GB RAM から 10 GB RAM に削減されました)。 ただし、データ・ストア・サイズ (ディスク) は、例えば 11 GB など、それよりも大きくなります。 このような場合、ディスクからデータを読み取るための十分なスペースが RAM にないため、形成が滞る可能性があります。
ソリューション:
以下の解決策を試行して、エラーを修正してください。
a. Redis は、その 1 次操作用に単一スレッド化されています。 使用するコア数が少なくなり、メモリーが増えることが予想されます。 これにより、クラスターの可用性が向上します。
b. 入出力のニーズに応じて、RAM とディスクを増やします。
c. RAM を大幅に削減しないでください。 徐々に減分することをお勧めします。
Redis、固有の処理を実行するための透かしメモリが残っていることを確認する。
エラーREADONLY 読み取り専用のレプリカに対して書き込むことはできません
Databases for Redis には、マスターとレプリカの 2 つのノードがあります。 ユーザーはマスター・ノードにのみ接続でき、レプリカ・ノードは高可用性を確保するために使用されます。高可用性は通常、ユーザーがアクセスできません。 ただし、リモート接続の場合と同様に、レプリカがマスターにプロモートされる場合に切り替えが発生する可能性があります。 ノードが正しく構成されている場合、一時的なサービスの停止が発生する可能性があり、その他の影響は予期されません。
a. IOPSが低いため、マスターはビジー状態でセンチネルに応答せず、プラットフォームログにこのエラーメッセージが返される。
b. ネットワーク待ち時間が原因で、標識はマスターと通信できません。
c. 定期保守。
d. マイナー・バージョンのアップグレード。
ソリューション:
以下の解決策を試行して、エラーを修正してください。
a. 再試行および再接続のロジックをアプリケーション設計に組み込みます。 ioredis や noderedis などのライブラリーを使用できます。 詳しくは、 Redis に関するブログ投稿 を参照してください。
b. 特定のクライアントには、再試行および再接続のロジックが組み込まれています。 これらのクライアントも利用できます。
c. 再試行および再接続のロジックは、すべてのクラウド・サービスに対して強くお勧めします。