2012-07-08 89 views
3

我已經上傳我的ASP.NET MVC(3) site到我的主機,但網站中的所有頁面(即使沒有數據提取)的首次加載了很多慢?ASP.NET MVC主機緩慢嗎?

我訪問起始頁第一次發生7.30 s,如果我打reaload 1分鐘後,它會採取1.05 s,如果我打reaload repetly它會給我500 ms800 ms之間。

如果我約5分鐘後返回並擊中reaload我會再次得到7 s負荷?

如果我從我的本地主機(IIS7)運行相同的websight我會得到1 s第一次,然後快速重裝650 ms

該網頁正在使用的數據庫,但它在這兩種情況下,同一個數據庫(也被放置在我的主機)。

的網頁是www.biss.se

我應該從哪裏開始看?

編輯:

這是我的Application_Start()通過創建一個AppDomain和

protected void Application_Start() 
{ 
    AccountModel accountModel = new AccountModel(); 
    AreaRegistration.RegisterAllAreas(); 

    RegisterRoutes(RouteTable.Routes); 
    MappingHandler.RegisterMappings(); 

    #region Register Extra DataNotations for Display Attribute 
    ModelMetadataProviders.Current = new DisplayMetaDataProvider(); 
    #endregion 


    if (!accountModel.CheckIfAdminAccountExists("adminAccount")) 
    { 
     accountModel.CreateUser("adminAccount", 
            "Admin", 
            "Admin", 
            "", 
            "", 
            postCode: "", 
            locationId: "", 
            inactive: false, 
            siteRole: Controllers.SiteRoles.Admin, 
            activatedByUser: true); 
    } 

} 
+0

您是使用共享網站託管,運行您自己的服務器還是使用VPS? (我假設您使用的是網站主機?) – mawburn 2012-07-08 19:32:51

+0

如果您使用的是共享主機,則這是預期的。像Winhost這樣的主機通常只會爲您的MVC3應用程序提供100MB的內存,一旦達到閾值,**或**達到一定時間的不活動狀態,整個應用程序池就會被回收。瀏覽一下後,你感覺到的滯後可能會讓你的記憶達到高峯。 – 2012-07-08 20:19:08

+0

@MadBurn:是的,這是一個共享主機,但我的朋友www.bradspel.net在同一臺主機(同一臺服務器)上運行得很快,而且這是一個ASP.NET Webform 3.5網站(無MVC)。 – Ivy 2012-07-08 20:46:26

回答

7

當第一個請求到達ASP.NET應用程序,該應用程序在內存中由Web服務器加載Application_Start內的代碼被執行。此過程可能需要更多或更少的時間,具體取決於您在此事件中執行的操作以及要加載的程序集數量。經過一段時間不活動或達到某些內存/ CPU閾值後,IIS可以回收應用程序並從內存中卸載它。在下一個請求中,重複相同的過程。

所以基本上你應該尋找的是你這是在第一次申請執行你的Application_Start事件中執行任務。如果這些任務涉及I/O操作(如數據庫訪問)或東西,則可以記錄執行它們所需的時間。通過這種方式,您將能夠精確確定需要很長時間的代碼的確切過程,並能夠根據您的情況對其進行修復,或者在出現問題時與您的託管服務提供商聯繫。

MiniProfiler是這個分析的目的一個很好的工具。

+0

謝謝,有趣!我已經用Application_Start更新了我的帖子,我們可以看到那裏有不同的litle工作。此外,同樣的問題應該存在於本地主機上,但它不?我會查看MiniProfiler。我還可以提到一位朋友在同一臺主機上運行http://www.bradspel.net/,這是一個常規的ASP.NET 3.5網站,速度更快。 – Ivy 2012-07-08 20:45:13

+0

我還必須補充說,如果您嘗試訪問本網站上的任何其他頁面,您將在第一次注意到相同的緩慢延遲,因此如果它不針對每個請求進行回收,似乎並不是application_start。 – Ivy 2012-07-08 21:11:23

+0

沒有必要在localhost上存在相同的問題。在本地主機上,你可能直接連接到某個本地數據庫或其他東西。如果您說每個請求的響應速度都相同,那麼每個數據庫訪問似乎都有問題。我想你將不得不聯繫你的虛擬主機提供商的支持。我們無法幫助你。這個問題似乎與您的代碼無關。在此之前,使用分析器度量執行查詢所需的時間並能夠查明問題。 – 2012-07-08 21:18:44

1

你應該看看你的IIS設置。 IIS關閉所有網站女巫沒有被一定時間的請求命中。

所以,如果有幾分鐘站點中沒有請求會從內存中卸載,需要

那的原因,你有本地和遠程計算機上的不同模式的行爲。 某些時候,主機會阻止此設置,原因是虛擬機上客戶端的內存使用率較低。

我不記得要更改的設置。有人應該給出更多的答案。

0

剛剛在IIS8 Windows2012服務器上運行的ASP.MVC3應用程序具有相同的行爲。

如果您確定自己在做什麼,則可以將IIS配置爲保持應用程序池活着。

該解決方案可以發現here on G+

,最重要的是配置閒置超時設置的應用程序池。

+2

請嘗試閱讀本文http://stackoverflow.com/help/deleted-answers,以獲得更多瞭解如何**不**回答。即:「不能從根本上回答問題的答案」:**幾乎不超過一個外部網站的鏈接**。如果可能,請用解決方案的摘錄擴展您的答案 – 2013-08-09 14:29:17

-1

如果你去高級設置,應用程序池,然後就可以看到最大工作進程屬性和值設置爲2,而不是1

我以這種方式解決我的問題。

+0

請詳細說明您對問題的回答。 – dgilperez 2015-02-10 00:58:39