C# .NET Core IIS WebService 低并发下高延迟问题排查求助
免责声明
因暂未明确问题根因,我选择在Stackoverflow而非Serverfault提交该问题。
问题描述
我负责一款即将上线的应用,使用自研工具开展回归测试与压力(负载)测试:2-3个客户端并发测试时服务无异常,但并发客户端达到8-10个时,API服务延迟、处理耗时大幅上升。
本次压测定义:TPS = 测试工具每秒发起的请求数(即每秒启动的客户端/线程数)
压力测试工具输出结果如下:
- TPS @ 5:平均处理耗时 1302 ms
- TPS @ 10:平均处理耗时 5641 ms
- TPS @ 30:平均处理耗时 13549 ms
- TPS @ 50:平均处理耗时 6136 ms
- TPS @ 100:平均处理耗时 24854 ms
观测现象
- TPS与延迟无明确线性规律,TPS超过10后整体耗时显著升高,例如TPS=50时的处理耗时远低于TPS=30的场景。
- 观测到请求存在排队现象,新请求完成处理的间隔存在明显卡顿,相关表现可参考压测过程记录截图。
- 唯一观测到有改善效果的操作是移除代码中的外部API调用,但单独对外部API做E2E压测时无延迟问题,可稳定支撑5000+TPS、平均耗时120ms,而经本服务转发时TPS超过10即出现明显延迟。
- 压测期间服务器硬件资源(内存、CPU)占用率始终不超过5%。
请问后续应该从哪些方向排查定位问题?如需补充信息可随时告知。
技术栈
- C# (.NET Core),基于IIS部署的WebService
已尝试的排查/优化操作(均无明显效果)
- 对依赖的外部应用做E2E压测,可轻松支撑5000+TPS无明显延迟;
- 在前端、服务、集成所有层级部署NGINX负载均衡;
- 使用MongoDB Optimizer优化数据流转效率;
- 升级数据库配置:内存从16 GB升级至64 GB,CPU从2核升级至8核;
- 全面核查IIS配置项,未发现异常配置;
- 关闭杀毒软件,排除外部HTTPS调用被拦截影响的可能。
内容的提问来源于stack exchange,提问作者Zwac
相关产品推荐
相关产品推荐

