2010-09-03 71 views
1

我們正在運行一個非常重連接的插入式postgres數據庫(我們應該已經完成​​了一些連接池,但現在沒時間了)。postgres連接超過max_connections?

在進行一些故障排除時,我使用netstat向我顯示有多少個連接到postgres。我通常會看到比我在postgres.conf文件中指定的更多(通過max_connections)。

我會看到的netstat 1400-1600連接,即使我有MAX_CONNECTIONS設置爲1000

任何人有任何線索是怎麼回事?這究竟是如何發生的?

對此的任何見解都會很棒。

回答

2

這些連接可能已關閉嗎? Windows爲例子不立即關閉連接,但它改變其狀態爲「TIME_WAITING。

所以連接顯示在netsat但實際關閉。

只有那些顯示爲‘ESTABLISHED’是「live」connections。

btw:你可以簡單地在你的PostgreSQL服務器前放一個連接池,而不需要改變你的應用程序,pgPool(或者pgBouncer)會假裝它們是一個真正的PostgreSQL服務器, 「背後」

0

使用連接池。超過10 00連接會顯着降低數據庫速度,即使是1000個連接,您也需要一些帶有大量內核和RAM的$$$$$硬件。使用連接池更有效率。

+0

我知道。幸運的是,這是一款服務器硬件,配有32GB內存,16個內核以及一些額外的牛肉。 下週發貨,所以我們不能做任何大的代碼更改。必須在版本更新中完成。 雖然吸取了我們的教訓。問題在於測試和需求在最後發生了一些變化。我們認爲我們將會有大約150個連接。 – 2010-09-03 18:35:33

+1

正如我已經寫道:使用pgPool或pgBouncer,您不需要更改代碼中的任何內容以使用連接池 – 2010-09-04 21:57:42