我使用php-fpm在10臺服務器上每秒大約有11000次點擊。我正在從MySQL遷移到postgres,所以我的問題是使用pg_ * p * connect是否有意義?是否有意義使用pg_pconnect(php-fpm)
回答
最好使用像PgBouncer這樣的專用連接池。
性能應該可以與pg_pconnect
相媲美,但是在PHP代碼中出現錯誤後,PgBouncer will allow to perform a cleanup應該可比。 pg_pconnect
will not automatically clean open transactions, locks, prepared statements等
那麼,pg_pconnect將意味着每個PHP後端都有一個連接,因此它取決於您擁有多少後端。使用傳統的Apache mod-php安裝程序,它會成爲一個非啓動器,但您可能會忽略它。
數據庫服務器可以處理數百個空閒連接,但如果它們都同時發出查詢,則幾乎可以肯定地停止。我已經看到了每個核心不超過兩個連接的經驗法則 - 假設I/O不會首先限制您。
常用的方法是運行一個連接池像pgbouncer並且php連接每個請求。這可以減少連接開銷,同時保持併發性。
建立與PostgreSQL服務器的連接預計會比MySQL服務器貴得多。這是由於這些數據庫在處理獨立連接之間的資源分配和特權分離方面的不同設計選擇。
因此,對於一個網站,只要有可能就重用到PostgreSQL的連接是完全合理的。
通常建議的方式不是使用pg_pconnect
,而是使用pgBouncer或pgPoolII等外部連接池,它們更適合於此任務。但是,使用PHP-FPM時,您已經有了一箇中間件,可以讓您通過fpm進程管理器選項以某種方式控制打開連接的數量,因此它可能足夠好。您可以考慮將pm.max_requests
設置爲非零值,以確保以合理的頻率清理連接,並避免在非高峯時間保留一堆未使用的連接。
謝謝。你能告訴我爲什麼不推薦使用pg_pconnect? – varan
查看@ RichardHuxton的回答。基本上你最終將每個Apache進程與一個獨特的開放式PG連接結合起來。這通常意味着太多的連接,而對它們的控制太少。但fastcgi模型緩解了這個問題。 –
如果您使用的是poolers(pgbouncer是我的建議),那麼您可以使用pg_pconnect來使這些連接的成本/時間更低。只要避免pg_pconnect直接到pg服務器。 –
- 1. 總是使用Straight_JOIN是否有意義?
- 2. 是否有意義使用ViewModel
- 3. 是否有意義定義const scope_refptr()?
- 4. 不使用QThread :: start()而使用QThread是否有意義?
- 5. 是否有意義擁有多個NSPersistentStoreCoordinators?
- 6. 使用varchar列作爲外鍵引用是否有意義?
- 7. 是否有意義,只顯示是否有變化
- 8. 這是否有意義 - 功能?
- 9. Tomcat的EL Stream API是否有意義?
- 10. @property(只讀,保留)是否有意義?
- 11. 這是否有意義(蘋果文檔)?
- 12. SharedPreferences的緩存值是否有意義?
- 13. 在SolrCloud中,replicationFactor = 2是否有意義?
- 14. 邏輯分析 - 這是否有意義
- 15. forward_iterator模板類是否有意義?
- 16. maxBufferPoolSize小於maxBufferSize是否有意義?
- 17. webservice - http連接池是否有意義?
- 18. 「$ _REQUEST ['edit'] ['term']」是否有意義?
- 19. 是否有意義添加ATMHud tabBarController.view
- 20. Nhibernate只返回列是否有意義?
- 21. 是否有意義測試控制器
- 22. 靜態constexpr變量是否有意義?
- 23. 使用基數較低的索引是否有意義?
- 24. 在前端使用DI容器是否有意義javascript app
- 25. 在查詢「SELECT 1 ...」中使用「LIMIT 1」是否有意義?
- 26. 索引是否有意義加快UPDATE的使用?
- 27. 在異步方法中使用QueueClient.OnMessage是否有意義?
- 28. @property與readonly結合使用是否有意義?
- 29. 只使用twitter bootstrap的插件是否有意義?
- 30. 在DetailsView的BoundField中使用'SortExpression'是否有意義?
是否合理使用pg_pconnect和pgbouncer? – varan
不,使用pg_pconnect和PgBouncer沒有任何意義。 – Tometzky