大家好,感謝您的閱讀,
我有一個延遲問題,即自上次調用後經過一段確定時間後首次調用時,我的應用程式需要很長時間才能啟動。 Web 應用程式是一個 WCF 服務,我們討論的是在實際處理開始之前大約 18 秒的延遲。現在,我相信我知道如何減少這種延遲,所以這不是我的問題(無論如何,這更像是 stackoverflow 交易)
我的問題是,任何人都可以向我解釋為什麼儘管我禁用工作進程關閉,並且工作進程回收應用程式在一段不確定的不活動時間後仍然「停止」?
為了理解這一點,我需要更多地了解 IIS 中託管的 WCF 服務的內部工作原理。我完全希望對此有一個直接的答案。
非常感謝您提供的任何幫助,DC
答案1
如果工作進程的「回收和效能」標籤上的所有內容均未選中,則 IIS 不應終止這些進程。是否有與進程「結束」時間相對應的事件日誌條目?在我看來,WCF 應用程式可能會崩潰。 WCF 不會像標準 .NET 應用程式那樣將異常記錄到事件日誌中,因此如果您不編寫自己的日誌,則可能需要開啟WCF 追蹤看看是否這就是問題所在。
同時,解決您的問題的快速醜陋解決方案可能是在WCF 服務中創建某種廉價的測試或只讀事務,然後配置一個監視應用程式或腳本每隔X 秒輪詢一次,以保持工作進程與程式碼保持活動狀態預 JIT。
答案2
我相信這個問題與 WCF 無關,錯誤在於 nHibernate 整理它的對應。我透過編譯 nHibernate 映射檔解決了這個問題,這樣 nHibernate 就不必這樣做了。