我一直在設置適當的池大小(在database.yml中)的一些想法。對於我在database.yml中的池大小,我應該考慮什麼?
我在what is the use of the pool option in database.yml處看到類似的問題,但需要進一步瞭解這一點。
這是我的設置。我有5個工作進程運行Unicorn的實例。我還將Sidekiq實例的併發性設置爲5(我正在調用5個併發線程)。
對於我的游泳池大小,我應該考慮什麼?我應該考慮哪些其他因素?
這是我的理解,到目前爲止(從一個工程師,我說前面的引用):
假設你離開它在默認5這只是意味着,內側「 單一的過程」 ,池大小爲5.每個進程的池爲 。它不是系統級的,具有5值不 意味着你被限制爲5點的過程,那只是意味着每個 進程都有自己的游泳池,大小5
在總結,每個實例的數據庫池大小爲5.這也意味着數據庫池大小設置不是應用程序範圍,而是每個進程/實例。這也意味着,因爲Sidekiq和Unicorn將以自己的實例運行。它將擁有自己的數據庫池大小5.這個假設是否正確?
在這一點上,我可以假設5的默認池大小通常是安全的。你的想法?
PS。如果您可以共享您的AWS RDS實例的池大小。這將不勝感激。
PostgreSQL通常會在實際運行查詢的活動工作會話數少於100的情況下執行最佳效果,除非前面有一個連接池用於排隊查詢。記住這一點。請參閱http://wiki.postgresql.org/wiki/Number_Of_Database_Connections –
同時活動的運行查詢應該與數據庫的可用線程有某種關係。 – frlan