asp.net – 使用jetBrains dotTrace检测W3WP CPU问题

我们在生产服务器上的W3WP流程一直很高.它不会达到最大值100%,但会很快上升到90%s.为了帮助调查这一点,我使用JetBrains dottrace描述了实时应用程序.

结果如预期.所有慢速方法都是查询数据库的NHibernate函数.我的问题是,这些慢速方法是否会对我们的Web服务器上的cpu产生影响,因为我们的数据库服务器位于单独的计算机上.当然,如果数据库服务器正在做一些工作,那么Web服务器jsut等待响应,cpu不应该上升?

如果是这种情况,我如何使用dottrace(或其他工具,如果需要)来计算cpu的使用位置,而不是等待来自其他地方的响应的服务器?

dottrace热点截图

您可以从屏幕截图中看到,大部分时间都花在等待外部HTTP请求完成上.但是,这些不应该影响我想到的Web服务器上的cpu使用率

解决方法

很可能是NHibernate本身正在对您的Web服务器进行艰苦的工作,而且数据库实际上做的相对较少.

我建议运行一个sql分析器来查看数据库是否真的需要在单个调用上花费很长时间(来自NHibernate).

我的猜测是你会看到NHibernate对数据库进行了大量的调用,然后处理它们(在你的erb服务器服务器上),并且这是负责高cpu的.

如果对连接有很多延迟提取,那么最终可能会出现这样的情况,即NHibernate会对数据库进行多次调用,从而获取一个请求的数据.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....