2012-12-17 218 views
15

我們的網站運行在iis 7.5的兩臺機器上 工作正常。應用程序池回收後IIS 7.5 Web應用程序第一次請求很慢

另一個在應用程序池回收後需要很長時間來處理第一個請求。它可能需要60秒以上,因爲它將被用作我們的生產服務器,所以它是不可感知的。

我檢查了兩臺服務器上的應用程序池設置,它們是相同的,並且兩臺服務器上的Web應用程序版本相同。 我已經運行任務管理器和資源監視器,當我發出請求時添加一個連接到機器,但沒有其他事情發生,iis甚至不會在日誌中顯示請求,直到它完成。 我真的不知道它在做什麼。

是否有任何設置的痕跡,我們可以嘗試解決這個問題或找到問題。 這很令人費解。

編輯: 所以我有一些更多的信息現在,finall得到了失敗的請求日誌工作(只好給用戶IIS_IUSRS權限),但我有一些日誌,看看什麼在

去日誌文件中的時間在兩秒之內。

1. MODULE_PRECONDITION_NOT_MATCH Name="ScriptModule-4.0", Precondition="managedHandler,runtimeVersionv4.0"   12:09:46.422 
2. VIRTUAL_MODULE_UNRESOLVED  Name="FormsAuthentication", Type="System.Web.Security.FormsAuthenticationModule"  12:12:04.390 

正如你所看到的,在這兩個事件之間需要2分鐘的時間,任何人都會在這之前加入?

+0

實例使用的數據是否也一樣? –

+0

@Thomas。是的,目前的網站指向同一個數據庫。 – MrJoeBlow

+0

web.config是一樣的嗎? – Aristos

回答

19

這有點分不清什麼是您的其他服務器上的事情,但是這就是你可能要重新考慮一個簡單的清單:

  • 始終預編譯您的網站,而不是複製它!你可能會獲得顯著的性能提升在部署之前編譯您的網站: ASP.NET Precompilation Overview

  • 不要運行生產應用程序啓用debug="true",當調試標誌在你的web.config真實的,更多的內存被應用在內部使用運行時,由於一些額外的調試路徑啓用,代碼可以執行慢得多

  • 檢查你的web.config文件,以確保跟蹤在<trace>部分被禁用

  • IIS 7.5自帶的Auto-Start Feature。 WAS(Windows進程激活服務)開始被配置爲自動啓動的所有應用程序池,請確保您的應用程序池配置爲AlwaysRunning在IIS 7.5 applicationHost.configcheck out here更多細節

  • 檢查出ASPNET.CONFIG文件中看到如果兩臺服務器上的配置仍然相同。每個asp.net服務器都可以通過位於框架文件夾根目錄的aspnet.config文件很好地配置

  • 確保在aspnet.config文件中將代碼訪問安全性(CAS)的發佈證據設置爲false,這可能會增加重新啓動ASP.NET應用程序池時的初始頁面加載。你可以閱讀more about it here

以下是如何禁用檢查CAS發行策略的應用程序:

<configuration> 
    <runtime> 
     <generatePublisherEvidence enabled="false"/> 
    </runtime> 
</configuration> 
+0

謝謝。我會通過這份清單,希望會有一些結果。我會回覆一次。 – MrJoeBlow