最近同事 馬克 詢問一個作業會發生「已超過連接 Timeout 的設定。在作業完成之前超過逾時等待的時間,或者是伺服器未回應」的錯誤。
查看 Profiler 的資訊,發現那個 Query 執行約 30 幾秒。
預設 ADO.NET 的 CommandTimeout 不是 60 秒嗎?
因為同事專案使用的是 LINQ to SQL,
查了一下,原來 LINQ to SQL,預設是 30 秒。
詳細可以參考:Change The Default CommandTimeout of LINQ DataContext
而這問題有2個方式來解決,
1.調整 CommandTimeout 的時間,從預設的 30 秒,改大一點。
2.調整 SQL 的效能。
從上面 profiler 來看,read 蠻大的,除非查出的資料很大,不然就是沒有用到適合的 index 。
晚點,聽說客戶有加了 index ,就沒有問題了。
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^