2016-01-21 44 views
0

我正在爲Rails Postgres應用程序免費而公平地使用Heroku。 關於Heroku Postgres的定價,我可以看到連接限制(對於最便宜的報價設置爲120)。Postgres Heroku連接限制詳細信息 - Rails應用程序 - ROR

這個連接限制是什麼意思? 我已經看到它可能會處理參數max_connections,但即使如此,我真的不知道它是如何工作的。

如果我有我的導軌服務器接收訂單並要求我的數據庫進行更新或簡單選擇總是使用相同的數據庫Postgres用戶:它是否只計算一個連接? 我不這麼認爲,但我想獲得有關此限制的更多詳細信息。

非常感謝。

回答

1

max_connection定義了同時運行的Postgres實例的數量來提供查詢。 max_connections爲同一個postgres用戶打開多個連接。它可以提高性能,在某些情況下,但是這可能會導致性能不佳這樣的:

  • 磁盤爭:如果您使用的磁盤(不是RAM),那麼更多的表和索引的同時訪問,導致整個磁盤尋找更重
  • RAM:這導致更多的RAM使用情況。
  • 同步:您需要處理影響整體吞吐量的多個實例的同步。

如果用戶羣的增加,則可能會面臨too many clients錯誤,由於連接數的限制。再有就是

的解決方案概念是雙重的:

  • 池連接:如果Postgres的失敗處理的情況,你可以纔去使用的工具,如pgbouncer, repmgr and PgPool處理池連接Postgres的。
  • 應用程序優化:嘗試打開儘可能少的連接並儘快關閉連接。

您可以從以下鏈接在此進一步研究:

可以特別爲Ruby在這裏學習:https://devcenter.heroku.com/articles/concurrency-and-database-connections#maximum-database-connections