2010-12-15 48 views
2

在每個工作日結束時,我正在處理的網站上出現大量放緩現象。數據庫似乎存在一個問題,因爲我看到活動監視器中有大量的連接,似乎無所事事。任務狀態爲空,表明它是一個正在運行的查詢,但它們似乎從未消失。當我運行SQL事件探查器,我可以比較SPID,看到了事件類是「ExistingConnection」和讀取的TextData:網站放緩

-- network protocol: TCP/IP 
set quoted_identifier on 
set arithabort off 
set numeric_roundabort off 
set ansi_warnings on 
set ansi_padding on 
set ansi_nulls on 
set concat_null_yields_null on 
set cursor_close_on_commit off 
set implicit_transactions off 
set language us_english 
set dateformat mdy 
set datefirst 7 
set transaction isolation level read committed 

這沒有很大的意義對我似乎有數百這些條目全部使用不同的SPID,從不做任何事情。有任何想法嗎?

+0

這不是標準的SQL。您應該使用您正在使用的RDBMS和其他詳細資料來限定此情況。 – 2010-12-15 20:25:57

回答

1
  • 無所事事的連接會消耗一些內存,但沒有別的

  • 不多無所事事的連接意味着你的應用程序可能無法關閉它們

  • 你給的是「現有連接」,在輸出探查器並針對每個連接運行。這是無關緊要的

我們需要更多的信息。像每個工作日結束時運行哪些批處理作業或進程或備份或索引維護?

+0

每天結束時沒有任何具體的運行。但也許這是一種累積效應。如果一個連接沒有關閉並且坐在那裏,我會採用它,它會達到沒有連接和應用程序死亡的地步? – 2010-12-15 19:58:23

1

我想檢查Web應用程序是否使用衆所周知的連接池解決方案,重新檢查它是關閉連接(如果有某些原因不使用標準連接池解決方案),然後如果有其他用戶的數據庫I '想知道這是導致該問題的Web應用程序,我不確定如何測試您的情況。如果沒有太多的數據,而且我也不太瞭解數據庫,我會設立一個專門的臨時數據庫來查看問題是否繼續。很顯然,這在許多情況下都不起作用,除了解決問題的任何事情。

+0

它不使用衆所周知的池化解決方案。當頁面加載連接打開數據庫時,運行各種查詢,然後當頁面完成加載連接時關閉(我繼承了這一點,我沒有自己寫我想添加)。問題是整個網站是這樣寫的,我現在沒有去改變它(這可能是3個星期的工作,我目前沒有) – 2010-12-15 20:13:30

+0

...狡猾的...它可能不會那麼糟糕如你想象的。無論如何,它取決於如何創建連接,但連接池通常會提高性能(已經有一個與數據庫的開放連接),每次構建連接都是浪費的。搜索,替換,測試......它不會花那麼長時間。那麼你不必擔心太多的連接,只會有你允許的併發連接數。如果數據庫是事務性的,那麼您可能需要添加一個啓動事務並用提交來替換每個關閉。但這不是非常有創意的變化。 – Quaternion 2010-12-15 21:24:47