3

我们已经创建ASP.NET MVC app了接受file upload(最大 80mb)并拥有result pooling implemented by AsincController. 托管在 Windows 2008 R2 IIS7.5 .NET 4 上。服务器 2 核 2.6GHZ,2GB 内存,快速硬盘。

该网站有许多用户和性能监视器显示ASP.NET Requests/Sec ~15Request Current ~270

几分钟后 ASP.NET 启动queuing requestASP.NET Request Queued计数器开始增长,应用程序变得非常缓慢。我正在寻找这个问题将近一个月,试图分析代码,没有性能问题,也没有内存泄漏。增加maxWorkerThreads to 400maxIoThreads to 400。设置maxConcurrentRequestsPerCPU to 5000MaxConcurrentThreadsPerCPU to 0但这也无济于事。

似乎有帮助的一件事是将应用程序池的最大工作进程增加到两个或三个进程并制作应用程序池网络花园。之后 Request Current 跳转到 ~350 并且没有请求排队。但是网园引入了几个新的问题,这里就不多说了。

请发布任何建议我们如何提高应用程序性能而不使我们的应用程序在 IIS 池网络花园中运行?

4

1 回答 1

1

我会告诉你仔细检查需要很长时间才能进行工作的页面,或者下载或上传文件的页面,并禁用此页面上的会话。如果这是不可能的,那么您可能需要编写一个完全自定义的方式来处理会话。

为什么,因为会话会锁定所有内容,直到页面完全返回。

您可以阅读与会话相关的内容和此问题:
调用 aspx 页面以随机返回图像缓慢的
ASP.NET 服务器不会异步处理页面
尝试使 Web 方法异步
Web 应用程序在处理共享同一会话的另一个 Web 应用程序时被阻止  
什么性能计数器对识别 ASP.NET 瓶颈有用吗?  
完全替换 ASP.Net 的会话  

于 2012-11-08T18:37:26.363 回答