遇到了一個問題,我希望有人能幫助給我一些方向。 在.NET 3.5和NHibernate 1.2上處理幾年的應用程序。 過去一週,交易似乎隨機鎖定,一直有問題。我注意到NH有一個100000的command_timeout。現在我已經把它降到了30,因爲100000看起來很瘋狂!問題仍在發生。NHibernate SQL Server掛起進程
的SQL Server活動監視器顯示時出現問題,通常處於暫停狀態的阻塞事務。如果我殺死阻塞進程,那些進程被阻止,並且系統沒有問題。
運行在阻擋過程的檢查,我可以看到正在執行的大約SQL語句,是造成問題,但它是通過多系統的執行,在大多數的網頁在檢索普通數據的聲明。
我覺得怎麼樣可能造成的?沒有什麼明顯的...我們確實發佈了一些小的改變,但是沒有一個應該有這個效果。 Windows更新/服務包最近也在同一時間安裝。 SQL/.NET SP更新可能是導致此問題的原因?
我知道有很多在這裏,但試圖給像我一樣擁有的時刻。
新信息: 現在command_tinmeout已更新爲30秒,超過此執行時間的查詢會自動終止 - 或者我在活動監視器中看到。但是,似乎還有其他事情正在進行,因爲重複查詢也會因超時而失敗。但是,如果我停止並啓動應用程序池,則至少在一段時間內,所有內容都按常規開始工作。
感謝您的信息。它看起來好像是有問題的查詢主要是一個select查詢,並且在任何時候最多可以從表中讀取最多3行。什麼是檢查慢寫查詢的最佳方法? – TheITGuy 2012-02-06 19:01:53
這取決於它很容易重現。 ín活動監視器尋找被列阻塞,然後你可以看到你的選擇正在等待什麼,另一種選擇是跟蹤或查看SQL服務器中的DMV中的歷史記錄 – jakobandersen 2012-02-07 05:55:10