Redis 如何找到最佳的 IOCP 值

3

目前我们正在使用一个应用程序,该应用程序作为应用程序缓存向Redis实例发出大量请求,但我们遇到了一些问题。

我们在不同的操作中收到各种超时消息。例如:

System.TimeoutException: Timeout performing GET MyKey, inst: 2, mgr: Inactive, 
queue: 6, qu: 0, qs: 6, qc: 0, wr: 0, wq: 0, in: 0, ar: 0, 
IOCP: (Busy=6,Free=994,Min=4,Max=1000), 
WORKER: (Busy=3,Free=997,Min=4,Max=1000)

在查阅文档后,我们发现以下文章(https://github.com/StackExchange/StackExchange.Redis/blob/master/Docs/Timeouts.md)建议我们增加工作线程数(默认值=4)。
我们如何找到最佳的最小/最大工作线程数量?Redis 建议从200-300 开始。但是与默认值4相比,这似乎太高了。
当将数字设置得太高时,可能会遇到什么问题?为什么默认值只有4?
1个回答

4
请注意,当您使用ThreadPool.SetMinThreads(...)设置值时,这并不意味着立即或始终保留那么多线程。它只是意味着线程池将根据需要(没有任何限制)提供新的工作线程或I/O完成线程,直到达到每种类型线程的“最小”设置。
默认情况下,最小线程数设置为系统上的处理器数量。
您不必将其设置为200-300。您可以将其增加到某个值(例如100),并根据需要进行调整。在突发负载的情况下,您将需要更高的数字。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接