2010-12-06 87 views
1

我們有一個有2個實例的coldfusion企業服務器。每個實例在一臺MSSQL服務器上有200多個數據源到數據庫。這個數字將繼續增長。現在看來,即使數據庫很小,對單個數據源的請求也會變慢。當CF擁有更多數據源時,請求可能會變慢。coldfusion可以處理多少個數據源

回答

2

數據源是否因某種原因(例如不同的客戶/客戶等)而被分區?如果這實際上只是一大堆數據庫的大型應用程序,那麼您可以通過單個CF數據源通過跨數據庫查詢來減少DSN的數量。

如果帳戶CF用來連接到SQL Server有權讀取服務器上的兩個數據庫,你可以做這樣的事情:

選擇場,場2,場3 ... FROM [databaseA] 。[dbo] .Table1 T1 JOIN [databaseB]。[dbo] .Table2 T2 ON ...

我已經在跨多個數據庫共享的狀態和國家/地區表執行此操作。仔細設置權限以防止損壞或錯誤的更新。

2

當然這是可能的,我懷疑有很多人有這種經驗,所以我們可以猜測。

就我個人而言,我從來不會在SQL服務器中創建那麼多數據庫,並且在CF中有很多數據源。恕我直言,使用數據庫模式將是更好的解決方案,更容易維護,管理等。

內存情況如何?可能會發生大量的JDBC連接阻塞服務器。我會首先檢查內存消耗情況,之後會查看數據通過輸出的SQL統計信息,甚至以後可能還會查看SQL Severs性能設置,CF設置以查看可能的JDBC連接,網絡設置等等。 再次,只是猜測,並試圖給你一個提示看看。

2

還有更多的不僅僅是coldfusion。每個連接約4k,每個數據源可以使用多個連接。因此,200個DSN可能等於300或400個連接(或聚合時爲800或1000)。數據庫服務器本身使用「tempdb」作爲處理請求的工作空間。它擴展了這個工作空間來處理流量 - 但它在某種程度上是是共享資源。所以一個數據庫可能會影響服務器上的另一個數據庫。

我想:

  • 檢查(perfmon的有一些這方面的好專櫃)
  • 使用服務器監視器來獲得每個連接的總數感的SQL服務器上的連接總數實例。
  • 使用網絡監控,以確定哪些能力在每臺服務器上的網絡連接使用...

當然不用說,你的數據庫需要進行微調,以執行,以及(索引和優化 - 具有良好的模式並由良好的查詢代碼支持)。創建一個可擴展的解決方案需要這些東西:)

PS 所有 - 不用說,你可以聯繫我更加「正式」的幫助。我很樂意聊聊你的問題。

+0

感謝您的提示。sql-server確實有很多連接(已經有大約700個),而且有很多連接的延遲大約爲200ms。所以我們要嘗試另一種只使用1個數據源的方法。 – birdy1980 2010-12-07 13:25:13

+0

它怎麼樣?你是否解決了數據庫問題? – 2010-12-20 14:16:46

相關問題