一个经典的 ASP.NET 应用程序 - AppSrv + MS SQL DB。两台服务器都是重量级的 8 核、20 GB 内存。负载测试时,吞吐量达到 400 个 VirtualUsers(根据 LoadRunner),CPU 使用率约为 30%,数据库服务器主要处于空闲状态 - 响应时间急剧增加,直至无响应。
常见的疑点,例如Max Pool 被耗尽和ASP.NET 设置的conn 限制都没有错:Max Pool 设置为200,大约使用了80 个conn; conn 限制设置为 0。
我用 ANTS profiler 运行了代码,结果表明线程阻塞没有显着贡献。
想法非常非常欢迎!
最佳答案
使用一些适当的唯一请求 ID 将日志记录添加到您的应用程序,以便您可以有效地跟踪页面加载中每个操作所需的时间。例如,在每次数据库调用之前和之后进行记录将显示数据库调用是否花费了很长时间。
正如其他人所建议的那样,在数据库端添加日志记录/分析将显示是否死锁(或类似)。
关于asp.net - ASP.NET 性能瓶颈之谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/242614/