首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于数据库调用的w3wp.exe高网络

基于数据库调用的w3wp.exe高网络
EN

Stack Overflow用户
提问于 2012-06-13 15:21:50
回答 1查看 1.7K关注 0票数 0

我遇到了一个我从未见过的非常独特的问题。

客户有一个应用服务器和一个数据库服务器。应用服务器(win 2008)运行ASP.NET MVC 3应用程序。数据库服务器(也是Win 2008)运行server 2008。

每当向数据库提出请求时,w3wp.exe的CPU高达50-80%,网络流量达到2% ( 10 Gbps)。这需要一分钟左右的时间来显示请求的网页。

我检查了实际的Linq执行时间,得到数据只需几毫秒。

我希望这里的一些专业人士能对发生的事情有所了解。当然,它能在我的机器上工作。

更新

甚至从(在应用服务器上)执行的检索828行的查询也需要整整12秒才能完成.所以我想问题不在于应用程序,而在于数据库服务器或连接上的某个地方。

更新2我发现了一些有趣的东西。

这是缓慢的代码:

代码语言:javascript
复制
MyAppDataContext DataContext = MyAppDataContext.CreateNewContext();
IEnumerable<Requests> Entities = DataContext.Requests;

using (profiler.Step("get data")) {
    IEnumerable<Requests> dataset = from x in Entities
                                    where x.ControleStatus == 4
                                    orderby x.ID
                                    select x;
}

但是,当我将IEnumerable改为IQueryable时,代码执行速度要快10倍:

代码语言:javascript
复制
MyAppDataContext DataContext = MyAppDataContext.CreateNewContext();
IQueryable<Requests> Entities = DataContext.Requests.AsQueryable();

using (profiler.Step("get data")) {
    IQueryable<Requests> dataset = from x in Entities
                                   where x.ControleStatus == 4
                                   orderby x.ID
                                   select x;
}

所以我的问题是:是什么导致了IEnumerable和IQueryable之间的巨大差异?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-13 15:59:30

每当向数据库提出请求时,

用于w3wp.exe的CPU高达50-80%,网络流量达到2% ( 10 Gbps)。

Duration.

  1. 您在处理内存泄漏吗?使用语句的
  2. 包含在数据库交互类中?
  3. 我使用红色门蚂蚁内存探查器检查内存管理问题。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11018153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档