2013-07-03 39 views

回答

1

它們將具有不同的池。就ColdFusion而言,這些池是在數據源級別定義的,並且您有兩個不同的數據源。爲什麼你會有兩個完全相同的設置不同的數據源?我想如果你想強制他們使用不同的連接池。我想不出爲什麼。

我發現此文件how database connections are handled in ColdFusion。請注意,爲每個數據源設置了「維護數據庫連接」設置。

下面是從頁有關連接池的部分(如果它消失了):

如果「維護數據庫連接」設置爲數據源,如何ColdFusion服務器維護連接池?

當爲數據源設置「維護數據庫連接」時,ColdFusion會在第一次連接數據庫後保持連接處於打開狀態。它在第一次連接後不會註銷數據庫。您可以根據上述步驟d中的說明更改此設置。 ColdFusion Administrator中的另一個設置叫做「將緩存的數據庫連接非活動時間限制爲X分鐘」,在X不活動的分鐘後關閉「維護的」數據庫連接。此設置爲服務器範圍,並確定何時最終關閉「維護」連接。您可以通過轉到ColdFusion管理器中的「緩存」選項卡來修改此設置。修改「限制緩存數據庫連接不活動時間X分鐘」的界面如下所示:

enter image description here

如果一個請求使用已開通了數據源的連接,另一個請求到數據源來,建立一個新的連接。由於只有一個請求可以隨時使用連接,因此同時請求將打開一個新的連接,因爲沒有空閒的緩存連接可用。連接池可以增加到爲每個數據源設置的同時連接限制的設置。此設置稱爲「限制連接」,位於ColdFusion管理員中。點擊其中一個數據源標籤,然後點擊其中一個數據源。點擊「CF設置」並在「限制連接」旁邊勾選,然後在「啓用X同時連接限制」一句中輸入一個數字。請注意,如果您沒有在數據源設置下進行設置,ColdFusion服務器將使用服務器範圍的「Simultaneous Requests」設置。

此時,ColdFusion服務器維護着兩個數據庫連接池。每個連接都會保留在池中,直到達到「連接超時」時間段或超過不活動時間。如果前兩個選項都未實現,則連接將保留在池中,直到ColdFusion重新啓動。

「連接超時」設置關閉連接並將其從池中刪除,無論它是否處於活動狀態或未處於活動狀態。如果進程處於活動狀態,則不會終止連接。您可以通過在ColdFusion管理器中轉到數據源的「CF設置」來更改此設置。注意:只有「緩存的數據庫連接非活動時間」設置纔會結束連接,如果尚未使用,則將其從池中清除。您還可以使用「連接超時」覆蓋「緩存的數據庫連接不活動」設置,因爲它僅適用於單個數據源,而不是所有數據源。

0

嘗試使用兩個不同的數據源創建臨時表,如果第二個查詢出現錯誤,則使用相同的池並運行完美的文件意味着不同的池。

1

他們有不同的池。池由cf java代碼實現。 (或者是jrun代碼中的那個部分....)。它不使用任何基於jdbc的池。 Cf10可能已經切換到基於jdbc的池,但我懷疑它。

作爲測試

設置「驗證連接」 SQL等待換延遲'00:上兩個池00' 或類似(等待1分鐘):01。由於每個池的訪問池都是單線程的 - 包括運行驗證所需的時間 - 每個訪問不同數據源的頁面都有2個頁面,因此請求兩個頁面。如果他們在1分鐘後完成了2個池,如果一個頁面需要1分鐘,另一個需要2分鐘 - 這是一個池

作爲一個方面說明,如果在這1分鐘內確認你拔出網線(導致jdbc socket永遠保持打開狀態,等待響應)您的線程池現在已經死機,您需要重新啓動CF

相關問題