sql >> データベース >  >> NoSQL >> Redis

StackExchange.Redis.RedisTimeoutException:応答を待機しているタイムアウト

    例外メッセージからわかるように、最小ワーカープロセス数は、トラフィックに対して少なすぎます。

    ワーカー:(Busy =10、Free =32757、Min =2、Max =32767)

    この例外が発生したとき、10個のビジーワーカースレッドがありましたが、開始用に2個のワーカースレッドがありました。

    アプリケーションが操作を完了するために使用可能なスレッドを使い果たすと、.NETは新しいスレッドを開始します(もちろん、最大値まで)。そして、追加のワーカースレッドが必要かどうかを確認するために少し待ちます。アプリケーションがまだワーカースレッドを必要とする場合、.NETは別のスレッドを開始します。それから別の、そして別の...しかしこれには時間がかかります。 0ミリ秒では発生しません。例外メッセージを見ると、.NETが8つの追加のワーカースレッド(10-2 =8)を作成したことがわかります。作成プロセス中、この特定のRedis操作は待機し、最終的にタイムアウトになりました。

    ThreadPool.SetMinThreads(Int32, Int32)を使用できます 最小スレッド数を設定するためのアプリケーションの開始時のメソッド。 ThreadPool.SetMinThreads(10, 10)から始めることをお勧めします テストしながら微調整します。

    追加の読み取り:

    https://docs.microsoft.com/en-us/dotnet/api/system.threading.threadpool.setminthreadshttps://stackexchange.github.io/StackExchange.Redis/Timeouts.html




    1. Redisはキャッシュからデータを取得しません

    2. Mongodbconcatintおよびstring

    3. MongoDB:配列一致パラメーターでサブドキュメントを検索

    4. MongoidGroupByまたはMongoDbgroupby in rails