0

例外メッセージ: GET allBots の実行中のタイムアウト、inst: 1、mgr: 非アクティブ、err: never、queue: 7、qu: 0、qs: 7、qc: 0、wr: 0、wq: 0、in: 65536、ar: 0、IOCP: (ビジー = 2、フリー = 998、最小 = 1、最大 = 1000)、ワーカー: (ビジー = 0、フリー = 2047、最小 = 1、最大 = 2047)

GET stock_by_symbol_leg.to のタイムアウト、inst: 1、mgr: 非アクティブ、err: never、queue: 13、qu: 0、qs: 13、qc: 0、wr: 0、wq: 0、in: 0、ar: 0 、IOCP: (ビジー=3、フリー=997、最小=1、最大=1000)、ワーカー: (ビジー=3、フリー=2044、最小=1、最大=2047)

GET stock_by_symbol_aapl のタイムアウト、inst: 1、mgr: 非アクティブ、err: never、queue: 13、qu: 0、qs: 13、qc: 0、wr: 0、wq: 0、in: 0、ar: 0、IOCP : (ビジー=3、フリー=997、最小=1、最大=1000)、ワーカー: (ビジー=3、フリー=2044、最小=1、最大=2047)

GET portefoliosBotById_ec030000-0001-1200-0000-000000000000 のタイムアウト、inst: 1、mgr: 非アクティブ、err: never、queue: 13、qu: 0、qs: 13、qc: 0、wr: 0、wq: 0、in : 0、ar: 0、IOCP: (ビジー=3、フリー=997、最小=1、最大=1000)、ワーカー: (ビジー=3、フリー=2044、最小=1、最大=2047)

私は StackExchange.Redis バージョン 1.1.603 と利用可能な最小の Azure インスタンスを使用しています。多くの GET/SET タイムアウト エラーが発生しています。私のボックスでRedisサーバーをローカルで使用している場合、この問題は発生しません。これにより、Azureで問題が発生する可能性があります。Redis に格納される情報は 2kb から 10kb 程度です。

Azure portal では、接続数が 20 未満、メモリ使用量が約 130 メガバイト、CPU 使用率が 35% 未満、Redis サーバーの負荷が常に 13% 未満であることがわかります。ポータルから問題の兆候が見られません。

その問題を解決するためのより多くの情報を入手できる場所はありますか?

編集

最初の投稿以来、いくつかの設定を改善しました。

1) Azure Redis の C0 から C1 インスタンスに渡しました。

2) 接続文字列を 15 秒のタイムアウトに変更しました。これがどのように見えるかです:

boursexxxxxxx.windows.net:6380,password=xxxxxxxx,ssl=True,abortConnect=False,connectRetry=5, connectTimeout=15000, synctimeout=15000"

3) 呼び出しごとにローテーションする 10 個の遅延読み込み ConnectionMultiplex のプールを作成しました。

private static readonly Lazy<ConnectionMultiplexer>[] lazyConnection;

//In the static constructor of my cache :

lock (lockPookRoundRobin)
{
                lazyConnection = new Lazy<ConnectionMultiplexer>[POOL_SIZE];
                var connectionStringCache = System.Configuration.ConfigurationManager.AppSettings["CacheConnectionString"];
                for (int i = 0; i < POOL_SIZE; i++)
                {
                    lazyConnection[i] = new Lazy<ConnectionMultiplexer>(() => ConnectionMultiplexer.Connect(connectionStringCache));
                }
}

4) 多くのキャッシュの値を減らしました。私が持っているシリアル化されたオブジェクトに応じて:

4.1) 1.25ko (5%)

4.2) 0.154ko (5%)

4.3) 26ko (20%)

4.4) 700ko (ここで作業する必要がありますが、100 エントリ未満に制限されています)

4.5) 5ko (30%)

4.6) 66ko (40%)

4

2 に答える 2

2

ここで説明されているように、ThreadPool 設定を調整する必要があるようです。

これらの記事を確認することもできます。これらの記事は、Redis の使用時に人々が遭遇する一般的な問題を認識するのに役立ちます。

于 2016-08-01T22:46:31.093 に答える
0

その投稿を読んでいるすべての人のために。私はいくつかのことをしました:

  • Entity Framework を使用している場合は、シリアル化中に行う深さの数を必ず制限してください。
  • シリアル化された文字列を圧縮します。
  • C0 の代わりに C1 を使用します。
  • 多くのテレメトリを追加して、キャッシュの設定と取得の頻度を見つけ、負荷の高いシナリオを最適化します。
  • IIS のメモリ キャッシュを使用して Redis キャッシュをキャッシュします。私は非常に小さなことをしましたが、大量のデータが必要な場合のプレッシャーを解放していました.

Redis が Web サービスと同じサーバー上にないため、クラウド上にあると、かなりのオーバーヘッドが追加されます。

于 2016-08-23T04:21:22.167 に答える