昨日、Redis 2.4 / CentOS 6.2 キャッシュ サーバーで奇妙なパフォーマンスの低下が発生しました。4分ごとに循環します。
マスター サーバーの New Relic のスクリーンショットは次のとおりです 。
そして、これは同じ期間のスレーブの 1 つです: https://www.evernote.com/shard/s368/sh/802b01bc-294d-46a5-adaa-f64e2e8c8bd2/6cbe244d4570fae63ee412cd1de5a841
私たちの環境に関するいくつかの情報: - キャッシュ: 8 つの CPU、30GB の RAM、および 600Mbps の内部ネットワーク帯域幅を備えた 4 台の Linux クラウド サーバー - Web: 4 つの CPU と 200Mbps の内部ネットワーク帯域幅を備えた 30 台の Windows クラウド サーバー
Web サーバーはそれほどビジーではないようですが、ディップが発生するとタイムアウトします。これがクライアントの問題である可能性を排除していないため、彼は Web アプリケーションに関する詳細情報を提供しています。
Data Cache および AngieList v???? 用の Redis BookSleeve Client 1.1.0.4 を使用した Microsoft ASP.Net MVC 3 Web アプリケーション (このバージョンの BookSleeve と互換性があるもの) セッション状態。
最初は、Redis への接続の量に問題がありました。私が理解しているように、Redis 2.4 には一定数の接続クライアントがあります。
そのため、セッションとデータ キャッシュを別の Redis インスタンスに分離しました。残念ながら、AngiesList は複数の接続をサポートしていないため、マスター サーバーにのみ接続されます。BookSleeve クライアント接続は、.Net の System.Random を使用してランダム化されます。
readonly Random _randomReadConnection = new Random((int)DateTime.Now.Ticks);
データ キャッシュのクライアント接続数は、すべてのサーバーで約 200 です。セッション キャッシュには、ピーク時に約 4100 の接続がありました。
Redis のログを詳しく調べ、iftop と top を監視して実行しましたが、有用なものは見つかりませんでした。
では、なぜこれらのディップが発生しているのでしょうか。
私は .Net 開発者であり、Linux の専門家ではありません。私たちは Redis/Linux 分野のスペシャリストを持っていません... そのため、誰かが検索を絞り込むのを手伝ってくれることを願っています.
バックアップ計画の一環として、互換性のあるセッション状態パッケージを使用してクライアントを ServiceStack Redis v3 に更新し、念のため Redis 2.8 でサーバーを構成しています。
ありがとう。