2012-11-08 42 views
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 web應用程序

該網站擁有衆多用戶和性能監視器顯示ASP.NET Requests/Sec ~15Request Current ~270

幾分鐘ASP.NET開始queuing requestASP.NET Request Queued計數器開始增長,應用程序變得非常慢後。我正在尋找這個問題將近一個月,試圖分析代碼,沒有性能問題,也沒有內存泄漏。增加了maxWorkerThreads to 400maxIoThreads to 400。設置maxConcurrentRequestsPerCPU to 5000MaxConcurrentThreadsPerCPU to 0但這或沒有幫助。

看起來有所幫助的一件事是增加應用程序池最大工作人員進程到兩個或三個進程並製作應用程序池網絡花園。之後,請求當前跳轉到〜350並且沒有請求排隊。但網絡園引入了幾個我們在這裏不會提到的新問題。

請發表任何建議如何我們可以提高應用程序的性能,而不使我們的應用程序運行在IIS池網站花園?

回答

1

我會告訴你仔細檢查需要很長時間才能繼續工作的頁面,或下載或上傳文件的頁面,並禁用此頁面上的會話。如果這是不可能的,那麼你可能需要寫一個完全自定義的方式來處理會話。

爲什麼,因爲會話鎖定了一切,直到頁面完全返回。

可以讀取相對於會議和這個問題:
call aspx page to return an image randomly slow
ASP.NET Server does not process pages asynchronously
Trying to make Web Method Asynchronous
Web app blocked while processing another web app on sharing same session
What perfmon counters are useful for identifying ASP.NET bottlenecks?
Replacing ASP.Net's session entirely