软件环境 :负载均衡器Nginx +IISweb服务器,c# 用写的webapi接口,后台逻辑主要是与缓存打交道,不涉及数据库,单个请求响应20ms内,当并发到1000的时候,响应接近3秒,2000并发6秒,想问下为什么会出现这种情况。接口响应的时候CPU占用率很低,不到10%。
硬件环境:windowserver 2012 4核机器2台做负载均衡
可能是因为线程池中的线程不够用,CLR 1秒只能创建1-2个线程,当并发突增且线程池中的线程不够用时,CLR根本来不及创建线程。
原来我也认为是这样,后来更改了工作进程数为5个,并更改了machine配置,配置 iis最小线程数为50*机器核数,队列长度,工作线程数都设置很大的值,并发测试发现2000并发比1000并发时多了快2倍
@唐琳222: 读取缓存的代码有没有使用异步?
@dudu: 没有。缓存读取不超过5ms
@唐琳222: 有没有试过不走 nginx
@dudu: 试了,不走nginx也是一样的。
@唐琳222: 建议改为异步试试