Redis
 sql >> Baza danych >  >> NoSQL >> Redis

StackExchange.Redis.RedisTimeoutException:limit czasu oczekiwania na odpowiedź

Jak widzę z Twojego komunikatu o wyjątku, minimalna liczba procesów roboczych jest zbyt niska w stosunku do ruchu, który masz.

PRACOWNIK:(Zajęty=10,Wolny=32757,Min=2,Maks.=32767)

W momencie wystąpienia tego wyjątku było 10 zajętych wątków roboczych, a na początku były 2 wątki robocze.

Gdy w aplikacji zabraknie dostępnych wątków do zakończenia operacji, platforma .NET uruchamia nową (oczywiście do maksymalnej wartości). I czeka trochę, aby zobaczyć, czy potrzebny jest dodatkowy wątek roboczy. Jeśli aplikacja nadal potrzebuje wątków roboczych, .NET uruchamia inny. Potem kolejny, potem kolejny... Ale to wymaga czasu. Nie występuje w ciągu 0 ms. Patrząc na komunikat o wyjątku, widzimy, że platforma .NET utworzyła 8 dodatkowych wątków roboczych (10–2 =8). Podczas procesu tworzenia ta konkretna operacja Redis czekała i ostatecznie wygasła.

Możesz użyć ThreadPool.SetMinThreads(Int32, Int32) na początku aplikacji, aby ustawić minimalną liczbę wątków. Proponuję zacząć od ThreadPool.SetMinThreads(10, 10) i dostosuj go podczas testowania.

Dodatkowy odczyt:

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




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak zaimplementować transakcję z wycofaniem w Redis

  2. Zakleszczenie przy użyciu agregatora + Redis

  3. Websocket rozłączony Połączenie nieudane

  4. Jak skonfigurować aplikację internetową Spring Boot z redis za pomocą Dockera?

  5. Jeśli pracownik selerowy ciężko umrze, czy praca zostanie wznowiona?