我们项目用地StackExchange.Redis,在高并发下会有超时的报错提示。搞了好就,最终处理好了,赶紧记录一下,压压惊!
解决办法
1、设置最小线程池(ThreadPool.SetMinThreads(200, 200)),网上大多都这么说的,官网也是这么说的。这样表面上是可以解决超时问题的,但是线程太多会也影响CPU的运行效率的。最终会降低系统性能,是个治标不治本的办法。
2、换Reids驱动,虽然没有超时提示,但是并发在60就上不去了,程序卡死。这也也是治标不治本。不得行滴~
3、重点来了,逐个方法逐行排除。最终发现是因为在同步里面调用异步方法导致。改为同步调同步就解决了我的问题!
导致该问题产生的猜测:同步掉异步会向系统申请子线程,但是系统默认的最小子线程是8,操作最小线程数后申请新的线程系统会延迟500毫秒分配新的线程,并发量一上去就会导致后面的请求超时。
哎~前任埋的坑啊 ,也怪自己学艺不精