2012-10-16 64 views
0

我正在使用Postgres 9.1.5。 JDBC在第一個實例中工作正常,但當我嘗試再次執行時,它開始拒絕連接。例如,我使用JDBC登錄到我的Web應用程序,工作正常。但是,我嘗試使用連接來獲取其他一些數據,這引發了一個例外:連接被拒絕。我確信我的代碼沒有問題,因爲上次運行良好的登錄JDBC也會引發異常:拒絕連接。Postgres:連接拒絕

它重新啓動postgres的Windows服務後再次工作。然後,登錄JDBC,獲取一些數據,然後拒絕連接。我試過重新安裝。我的筆記本電腦有問題嗎?

另外,PGAdmin也存在同樣的問題。它會運行一些查詢,然後開始顯示錯誤消息:Postgres服務已停止。 有什麼我可以做的嗎?請指教。 此外,如果有任何額外的信息需要,請讓我知道。

+0

操作系統和PostgreSQL版本?檢查PostgreSQL日誌和系統日誌(dmesg,/ var/log,Event Viewer,Console.app等,具體取決於您的操作系統)。 –

回答

0

很難猜到,看起來像是正常啓動,但隨後出現問題。在這些情況下,您的第一站應始終是日誌文件。快速檢查可以在配置文件(doc here)中驗證max_connections,它可能預設爲一個可笑的低值。如果在pgAdminIII中單擊了服務器節點,您也可以在「統計信息」選項卡下看到所有打開的連接,也許在進程中出現了一些問題,從而耗盡了所有可用的連接。

確定發生什麼的另一種方法是以交互方式啓動postgres服務器(即,讓它將其所有消息輸出到您啓動它的窗口中)爲explained in the official documentation

另外,如果你的服務器運行在Linux上,PS可以幫助你,Postgres連接是由單個進程管理,即它們在PS單獨出現:

ps ax | grep postgres: 
.... 
20528 ?  Ss  0:00 postgres: username dbname clienraddress(48679) idle 
1

可以有這種行爲基本上是兩個方面的原因:

1)你的postgresql綁定在127.0.0.1地址上,你想從其他計算機上詢問他。在這種情況下,您必須檢查postgresql.conf文件並檢查行listen_addresses。必須有'*'。或者,您可以使用防火牆,並且保護對端口5432的訪問權限,這是默認的Postgresql端口。

2)您在文件pg_hba.conf中設置了錯誤的權限。請檢查這個文件,它顯然有一些評論的例子。