2013-04-11 26 views
0

我已經在我的postgres.config上測試過pgtune,所以我知道我可以在那裏更改,但是當我嘗試更改max_connections或shared_buffers時,我無法重新啓動postgres。我只是得到一個錯誤,但日誌中沒有指定錯誤。 (不知道在哪裏這些日誌去,但他們不是在正規pg_log DIR)更改max_connections或shared_buffers後Postgresql不會重新啓動

我的設置是:

shared_buffers = 24MB # (pgtune wizard 2013-04-11 = 120MB) 
max_connections = 120 # (pgtune wizard 2013-04-11 = 200) 

IM在512的Linode它只能運行PostgreSQL的。如果我將shared_buffers超過24MB或max_connections超過120,我無法重新啓動postgres。

我在Xen的的Linode實例運行在Ubuntu 12.04.2 LTS:

Ubuntu 12.04.2 LTS (GNU/Linux 3.8.4-x86_64-linode31 x86_64) 

任何人都知道的Postgres它的自我判斷24MB和120間的連接是最大的系統?

+0

你在什麼操作系統上? – 2013-04-11 09:24:48

+0

Ubuntu 12.04.2 LTS(GNU/Linux 3.8.4-x86_64-linode31 x86_64) – 2013-04-11 10:23:59

回答

1

這聽起來像您可能超過了共享內存的極低默認限制。請參閱operating system resource limits。對於Linux,請參閱kernel.shmmax

在附註上,增加max_connections往往是錯誤的答案。大多數PostgreSQL實例在相對較少的活動連接中工作得最好。通常最好使用連接池排隊工作;使用較少資源時您將獲得更好的整體吞吐量。如果您的應用程序沒有內置連接池,則可以使用PgBouncer作爲外部連接池。

+0

只需瀏覽文檔,但如果我瞭解它的要點,我需要更改我的服務器設置? – 2013-04-11 12:09:35

+0

@ Garreth00假設我的*猜測是什麼導致PostgreSQL啓動是正確的,是的。您需要檢查日誌以獲取更多信息;如果它不在PostgreSQL日誌本身中,它可能在'daemon.log'中。無論如何,你如何停止/啓動PostgreSQL? – 2013-04-11 23:16:19

+0

我同意@CraigRinger。我的經驗是虛擬機(linode是虛擬機?)和共享內存不能很好地混合。可能共享內存以某種方式被固定到物理內存中,並且虛擬機的資源緊張。恕我直言,你應該增加estimated_cache_size來代替,並保持共享mem至少(高速緩存目錄,存儲會話數據+ semafores等)。 – wildplasser 2013-04-11 23:29:02

相關問題