Seperti yang saya lihat dari pesan pengecualian Anda, jumlah proses pekerja minimum Anda terlalu rendah untuk lalu lintas yang Anda miliki.
PEKERJA:(Sibuk=10,Gratis=32757,Min=2,Maks=32767)
Anda memiliki 10 utas pekerja yang sibuk saat pengecualian ini terjadi, sementara Anda memiliki 2 utas pekerja untuk memulai.
Ketika aplikasi Anda kehabisan utas yang tersedia untuk menyelesaikan operasi, .NET memulai yang baru (tentu saja hingga nilai maksimum). Dan menunggu sebentar untuk melihat apakah utas pekerja tambahan diperlukan. Jika aplikasi Anda masih membutuhkan utas pekerja, maka .NET memulai yang lain. Kemudian yang lain, lalu yang lain... Tapi ini membutuhkan waktu. Itu tidak terjadi dalam 0 ms. Dengan melihat pesan pengecualian Anda, kita dapat melihat bahwa .NET telah membuat 8 utas pekerja tambahan (10 - 2 =8). Selama proses pembuatan, operasi Redis khusus ini telah menunggu dan akhirnya kehabisan waktu.
Anda dapat menggunakan ThreadPool.SetMinThreads(Int32, Int32)
metode di awal aplikasi Anda untuk mengatur jumlah utas minimum. Saya sarankan Anda untuk memulai dengan ThreadPool.SetMinThreads(10, 10)
dan sesuaikan saat Anda mengujinya.
Bacaan Tambahan:
https://docs.microsoft.com/en-us/dotnet/api/system.threading.threadpool.setminthreadshttps://stackexchange.github.io/StackExchange.Redis/Timeouts.html