2015-03-19 226 views
0

的解決方案是使用ASP.NET MVC應用程序E/F託管在IIS中的Windows Server 2012 R2標準VM託管在Hyper-V環境中。同一虛擬機正在運行SQL Server 2012.Windows Server 2012中的ASP.NET MVC應用程序停止工作(ESENT錯誤)

託管環境正在託管30個其他解決方案,並且存在足夠的可用磁盤空間並且沒有主機環境或VM的已知磁盤問題(chkdsk和sfc已在VM上運行,不報告任何問題)。

問題是解決方案/服務器停止短時間工作5到10分鐘,每當我們看到來自ESENT的事件ID 508/533和有關寫入「C:\ Windows \ system32 \ LogFiles \和」。

類似的消息一直被視爲與SQLSVR但這是由給大家到C的所有權利得到解決:\ WINDOWS \ SYSTEM32 \ LogFiles文件\總和。

如果問題仍然存在,它影響到整個虛擬機,有時它是沒有甚至可以通過遠程桌面連接。

我們已經看到大量的打開SQL Server的連接出現問題的時候發生,並且之前爲特定的Web API方法引入緩存我們實際上能夠清空SQL Server連接池。以防萬一我們將連接池從100個連接改爲200個連接,儘管自從我們引入緩存後我們還沒有看到這個特殊問題。

所有DbContext實例都通過「using」,ApiController.Dispose覆蓋或Controller.Dispose覆蓋進行處理,並且僅使用一個SqlConnection(用於日誌記錄系統)。

我懷疑問題是解決問題的外側,並且SQL Server連接的大量相關的事實,SQL Server是無法寫入磁盤。

下面是一些Windows事件日誌摘錄最近三個「破起伏」約web請求的數量些有用的信息之前,該問題後,服務器已自動恢復。

有什麼建議嗎? 10分鐘內

Web請求的問題之前正確的:第10分鐘時1399所
Web請求的服務器已恢復後:1630

18-03-2015 20點07分20秒833 MSSQLSERVER SQL Server在文件[C:\ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ DATA \ Xxx.mdf]上遇到1次(或多次)I/O請求需要15秒以上的時間才能完成數據庫[Xxx](5)。 OS文件句柄是0x0000000000000A7C。最新的長輸入/輸出的偏移量爲:0x000003e104e000

18-03-2015 20:07:40 833 MSSQLSERVER SQL Server遇到1次(或多次)I/O請求花費超過15秒才能完成在數據庫[Xxx](5)中的文件[C:\ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ DATA \ Xxx_log.ldf]中。 OS文件句柄是0x0000000000000A8C。最新的長I/O的偏移量爲:0x0000007f203000

18-03-2015 20:08:16 533 ESENT svchost(1740)寫入文件「C:\ Windows \ system32 \ LogFiles \在偏移1806336(0x00000000001b9000)爲4096(0x00001000)字節Sum \ Svc.log尚未完成36秒(s)。這個問題可能是由於硬件故障造成的。請聯繫您的硬件供應商以獲取診斷問題的進一步幫助。

18-03-2015 20:17:14 508 ESENT svchost(1740)請求寫入文件「C:\ Windows \ system32 \ LogFiles \ Sum \ Svc.log」,偏移量爲1806336(0x00000000001b9000)爲4096(0x00001000)字節成功,但花了異常長的時間(36秒)由OS服務。這個問題可能是由於硬件故障造成的。請聯繫您的硬件供應商以獲取診斷問題的進一步幫助。 10分鐘內

Web請求的問題之前正確的:第10分鐘時696所
Web請求的服務器已恢復後:614

19-03-2015 1時17分19秒533 ESENT svchost(1740)對於4096(0x00001000)字節,在偏移量3067904(0x00000000002ed000)處寫入文件「C:\ Windows \ system32 \ LogFiles \ Sum \ Svc.log」的請求尚未完成36秒)。這個問題可能是由於硬件故障造成的。請聯繫您的硬件供應商以獲取診斷問題的進一步幫助。

19-03-2015 01:33:02 508 ESENT svchost(1740)寫入偏移量爲3067904(0x00000000002ed000)的文件「C:\ Windows \ system32 \ LogFiles \ Sum \ Svc.log」爲4096(0x00001000)字節成功,但花了異常長的時間(983秒)由OS提供服務。這個問題可能是由於硬件故障造成的。請聯繫您的硬件供應商以獲取診斷問題的進一步幫助。

19-03-2015 01:33:03 833 MSSQLSERVER SQL Server遇到5次(或多次)I/O請求花費超過15秒才能完成文件[C:\ Program Files \ Microsoft SQL Server \數據庫[Xxx](5)中的\ MSSQL11.MSSQLSERVER \ MSSQL \ DATA \ Xxx_log.ldf]。 OS文件句柄是0x0000000000000A8C。最新多久,我的偏置/ O是:10分鐘內0x000000a389d000

Web請求的問題之前正確的:第10分鐘時555所
Web請求的服務器已恢復後:784

19-03-2015 03:33:51 833 MSSQLSERVER SQL Server在文件[C:\ Program Files \ Microsoft SQL Server \ MSSQL11中遇到了1次(或多次)需要超過15秒的I/O請求才能完成.MSSQLSERVER \ MSSQL \ DATA \ Xxx_log.ldf]在數據庫[Xxx](5)中。 OS文件句柄是0x0000000000000A8C。最新的長I/O的偏移量爲:0x000000aa95f000

19-03-2015 03:40:48 533 ESENT svchost(1740)寫入文件「C:\ Windows \ system32 \ LogFiles \對於4096(0x00001000)字節,偏移量爲3846144(0x00000000003ab000)的Sum \ Svc.log尚未完成36秒。這個問題可能是由於硬件故障造成的。請聯繫您的硬件供應商以獲取診斷問題的進一步幫助。

19-03-2015 03:40:48 833 MSSQLSERVER SQL Server遇到1次(或多次)I/O請求花費超過15秒才能完成文件[C:\ Program Files \ Microsoft SQL Server數據庫[msdb](4)中的\ MSSQL11.MSSQLSERVER \ MSSQL \ DATA \ MSDBLog.ldf]。 OS文件句柄是0x0000000000000A90。最新的長I/O的偏移量爲:0x00000000108000

19-03-2015 03:40:49 508 ESENT svchost(1740)寫入文件「C:\ Windows \ system32 \ LogFiles \總和\ SVC。日誌「偏移量爲3846144(0x00000000003ab000),4096(0x00001000)字節成功,但操作系統需要很長時間(36秒)才能處理該問題,這可能是由於硬件故障造成的。診斷問題。

19-03-2015 3時40分49秒17894 MSSQLSERVER 從調度池分派器(0x1a88)「XE發動機主調度池」工人0x00000000F03B8160似乎非產生在節點0約CPU使用:內核0毫秒,用戶0毫秒,時間間隔:336140.

回答

0

這聽起來像你的磁盤只是簡單的重載,因爲I/O需要這麼長時間,理想情況下他們應該花費大約10毫秒,超過1000倍長。

雖然你在虛擬機中運行,但追蹤問題可能會更棘手一些。這是由於虛擬機或主機上的I/O負載所致?您的VM磁盤可能與主機的其他I/O負載共享。

您可以將數據庫移動到虛擬機中不同的捲上,託管在主機的不同物理主軸上?

另一種可能性是底層存儲變差,並且I/O正在被底層硬件重試。

-Martin

0

磁盤I/O問題是我最初的想法,但「有趣」的事情是,它實際上從來沒有在高峯時段和高峯時段服務器沒有強調了CPU或磁盤I發生/ O。

我無法找到任何VM磁盤錯誤。我無法訪問主機環境,但我被告知沒有磁盤問題。託管環境正在執行虛擬機備份,如果出現這種問題,則無需執行任何操作,因爲它是必需的。我可能會嘗試讓虛擬機移動到另一個磁盤,但我不知道這是否可行。

目前我們已經在虛擬機上設置了一些詳細的磁盤I/O監控,希望這會給我們提供一些關於這個問題的信息,但我很懷疑它。

也許虛擬機只是「生病」,下一步可能是從頭創建一個新的虛擬機...

相關問題