我們有一個Web應用程序,用於在Web場上託管的MVC2 + Linq2SQL + MS SQL SERVER 2008。幾乎像stackoverflow.comWeb場中的ASP.NET MVC2 - 高流量的頁面加載速度很慢
我們有4×IIS7 + 1 SQL Server 2008中負載MS NLB
靜態內容平衡是由外部緩存提供高速緩存 - Akamai的,從而降低了要求的86%。
每個Web服務器都有32 GB的RAM和4個四核CPU,所以前端有64個核心。
我們將會話狀態保存在表中。
它工作正常,中等流量(網頁加載= 0.2秒),但該公司做電視廣告,在這些廣告期間,流量在20-30秒內達到20,000用戶。
在這一刻,頁面放慢到8-10秒。但是,在任何機器上,CPU和內存的使用率甚至不會達到40%。
數據中心的帶寬未達到其極限的一半。
頁面速度慢,僅從1-2個表中的最多10條記錄的簡單SELECT生成數據。
顯然有一個瓶頸在某處,並試圖找出在哪裏。
任何人有任何建議,我在哪裏尋找一個問題?
我猜這些表上的SELECT太多導致這個bottelneck。基於你的WHERE子句,你在這些表上有適當的索引等嗎? – Ankur
我同意Ankur。聽起來像是在數據庫上執行了過多的查詢。檢查你的索引,ToList(),Any()等的用法。這些都是調用數據庫的函數。你也可以使用像DotTrace這樣的工具來分析你的應用程序,看看會發生什麼。 – Rob
我在所有PK列上都有聚簇索引,並且我已經完成了執行計劃。我不認爲缺乏額外的索引會導致這個瓶頸。這當然有幫助,但我會獲得一小部分。我正在尋找一個巨大的收益。因此,我還考慮了SQL Server的磁盤I/O,並將數據庫分成幾個不同的磁盤,以提高磁盤I/O的併發性。正如它在這裏所說:http://tinyurl.com/6xfxuso –