安裝程序:ASP.net 3.5,Linq-to-Sql。單獨的Web和DB服務器(每個8核,8GB RAM)。 4個數據庫。我正在使用幾百萬條記錄到DB4中進行插入操作(現在使用Linq-to-Sql,儘管我可能會切換到SqlBulkCopy)。日誌記錄顯示記錄一直以600-700每秒的速度保存(我每運行1000條記錄就運行DataContext.SubmitChanges()以減小事務大小)。插入在一個Http請求期間運行(超時設置非常高)。爲什麼批量插入會導致ASP.net應用程序無響應?
問題是,在插入操作正在運行時,Web應用程序變爲完全無響應(均位於我的計算機上的不同瀏覽器窗口以及遠程位置的其他瀏覽器中)。
此插入操作正在觸摸DB4中的一個表。大多數頁面只會觸及DB1(所以我不認爲這是一個鎖定問題 - 我也通過Management Studio檢入,並且沒有對象被不必要地鎖定)。我已經檢查過Web和數據庫服務器上的性能統計數據,雖然它們可能會不時高峯,但在整個插入過程中,它們都保持在「綠色」範圍內。
什麼可以導致應用成爲的事情,我應該爲了縮小問題做反應遲鈍或建議的任何想法?
迴應建議:
- 建議,即插入所有正在使用DB連接:插件正在關閉不同的連接字符串(和DB)比使用應用的哪些網頁中完成的。此外,我檢查了SSMS,並且只有一個連接爲DB4打開,另一個打開爲DB1(因此它看起來不像連接不足)。
- 建議在Web服務器上插入最大CPU:這是服務器上唯一的應用程序(每次少於5個用戶)。性能監視器顯示CPU保持在12%-20%之間。記憶很難被感動。
以上對你的一些建議添加了回覆 –
根據你的意見,那麼我會推薦我的清單中的第2項......因爲這是唯一有意義的東西。 –