ホームページ  >  記事  >  データベース  >  Redis のパフォーマンスにはどのような問題がありますか?

Redis のパフォーマンスにはどのような問題がありますか?

(*-*)浩
(*-*)浩オリジナル
2019-06-18 13:59:382163ブラウズ

Redis の一般的なパフォーマンスの問題は次のとおりですか?

Redis のパフォーマンスにはどのような問題がありますか?

マスターはメモリ スナップショットを書き込み、保存コマンドは rdbSave 関数をスケジュールします。これにより、メイン スレッドの作業がブロックされ、パフォーマンスに影響します。スナップショットが比較的大きい場合 スナップショットは非常に大きく、サービスが断続的に停止するため、マスターがメモリ スナップショットを書き込まないことをお勧めします。 (推奨学習: Redis ビデオ チュートリアル )

マスター AOF 永続化、AOF ファイルが書き換えられない場合、この永続化方法はパフォーマンスへの影響が最も小さくなります。 AOF ファイルは成長し続けるため、AOF ファイルが大きすぎると、マスター再起動の回復速度に影響します。

マスターは BGREWRITEAOF を呼び出して AOF ファイルを書き換えます。AOF は書き換え中に大量の CPU リソースとメモリ リソースを占有するため、過度のサービス負荷が発生し、サービスが一時的に停止されます。

次は、私の実際のプロジェクトの 1 つの状況です。一般的な状況は次のとおりです:

1 つのマスター、4 つのスレーブ、シャーディング メカニズムなし、読み取りと書き込みが分離されているだけです。マスターは書き込み操作と AOF ログのバックアップを担当します。AOF ファイルは約 5G で、スレーブは読み取り操作を担当します。マスターが BGREWRITEAOF を呼び出すと、マスターとスレーブの負荷は突然急激に増加し、マスターの書き込みリクエストは基本的に応答しません。 が約 5 分間続き、スレーブは半分以上の読み取りリクエストに時間内に応答できませんでした。上記の状況は発生しませんし、発生すべきではありません。マスターのマシンは以前はスレーブであり、毎朝そのマシンにシェルでスケジュールされたタスクがありました。10 時に、BGREWRITEAOF が呼び出されて AOF ファイルを書き換えました。その後、マスター マシンがダウンしたため、バックアップのスレーブが変更されましたしかし、このスケジュールされたタスクが削除されるのを忘れられ、上記のような悲惨な状況に陥ってしまい、原因を調べるのに数日かかりました。

この問題を軽減するには、no-appendfsync-on-rewrite 構成を Yes に設定します。これを Yes に設定すると、再書き込み中に新しい書き込み操作が fsyncd されず、再書き込みが完了するまで一時的にメモリに保存されます。書く前に。マスターの AOF バックアップ機能を有効にしないことをお勧めします。

Redis マスター/スレーブ レプリケーションのパフォーマンスの問題、マスターへのスレーブ同期の最初の実装は次のとおりです。スレーブは同期リクエストをマスターに送信し、マスターは最初に rdb ファイルをダンプし、次に rdb ファイルをダンプします。 rdb ファイル全体をスレーブに送信すると、マスターがキャッシュされたコマンドをスレーブに転送し、初期同期が完了します。 2 番目以降の同期の実装は次のとおりです。マスターは変数のスナップショットを各スレーブにリアルタイムで直接送信します。スレーブとマスターの接続が切断され、再接続される原因が何であっても、上記のプロセスが繰り返されます。 Redis のマスター/スレーブ レプリケーションはメモリ スナップショットの永続性に基づいており、スレーブが存在する限り、メモリ スナップショットが存在します。 Redis はマスター/スレーブ レプリケーションがノンブロッキングであると主張していますが、ディスク IO の制限により、マスター スナップショット ファイルが比較的大きい場合、ダンプには長い時間がかかります。このプロセス中、マスターはこれは、サービスが中断されることを意味します。重要なサービスの場合、これによる結果もひどいものになります。

上記の 1.2.3.4 の基本的な問題の原因はすべて、システム IO のボトルネック問題、つまりハードディスクの読み取りおよび書き込み速度が十分に速くなく、メイン プロセス fsync()/write と切り離せないものです。 () 操作はブロックされます。

単一障害点の問題、現在の Redis のマスター/スレーブ レプリケーションが十分に成熟していないため、明らかな単一障害点の問題が存在します。現在、この問題を解決することしかできません。アクティブなレプリケーション、プロキシによるマスターのスレーブの置き換えの実装など。これは、Redis 作成者の現在の優先タスクの 1 つでもあります。

Redis 関連の技術記事の詳細については、「Redis データベース チュートリアルの使用方法の概要」 列にアクセスして学習してください。

以上がRedis のパフォーマンスにはどのような問題がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。