簡體   English   中英

連接池清除時間...我真的不知道該怎么稱呼:)

[英]Connection Pooling clear time… I don't really know what to call it :)

我有一個通過using子句連接到數據庫的客戶端應用程序。

  using (SqlConnection sqlConn = new SqlConnection(ConnectionString))
  {
      sqlConn.Open();
      //SQLcommand codes
  }

我知道這將確保sqlConnn.Close()和sqlConn.Dispose()被調用。 但是,對於運行此代碼的每個客戶端,我仍然在睡眠模式下在SQLServer上看到一些SPID,例如:

60 0睡覺的復仇者0 Xmark等待命令0 61 0睡覺的復仇者0 Xmark等待命令0 62 0睡覺的復仇者0 Xmark等待的命令0

我知道這是因為我在連接中使用了連接池,這就是為什么它們處於睡眠模式並在進一步的命令中再次使用的原因。 如果我不對它們進行任何處理,我會發現這些過程會隨着時間的流逝(大約10分鍾左右)而消失。

我的問題是:是否有C#或SQLServer2008中的設置將這個時間減少到2分鍾左右?

我面臨的問題是,如果我有很多客戶端在短時間內連接到數據庫,則我的最大池連接限制會很快達到。 我意識到可以通過增加連接池來解決此問題,但是我認為這就像從較小的碗升級為較大的碗,以容納泄漏的屋頂中的水。

我在MSDN上搜索並遇到了ClearPool() ,它使我可以從池中隱式刪除SPID,但我認為這違反了連接池的目的,並且它不是很干凈。

任何幫助是極大的贊賞。

如您所知 ,即使調用sqlconn.Close(),Sql服務器也可能無法關閉連接,並且它將對使用相同連接字符串進行連接的任何其他客戶端使用相同的連接。

理想情況下,您應該使用數據訪問層類,該類必須充當創建和管理連接的助手類,而不是希望減少這種時間。

使用這種方法將避免池化問題,我已經在良好的應用程序體系結構中使用了這種方法。

您應該改為使用這種方法修改代碼。

您正在尋找“空閑超時”設置。 它是為IIS中的應用程序池配置的。 參考此鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM