我在php-fpm的10台服务器上每秒大约有11000次点击。我正在从mysql迁移到postgres,所以我的问题是使用pg _ * p * connect是否有意义?
答案 0 :(得分:1)
建立与PostgreSQL服务器的连接预计比MySQL服务器要昂贵得多。这是由于这些数据库在如何处理独立连接之间的资源分配和权限分离方面的不同设计选择。
因此,对于网站来说,尽可能重用连接到PostgreSQL是完全有意义的。
通常建议的方法不是使用pg_pconnect
,而是使用更适合此任务的外部连接池,如pgBouncer或pgPoolII。但是,在使用PHP-FPM时,您已经拥有了一个中间件,可以通过fpm进程管理器选项以某种方式控制打开连接的数量,因此它可能已经足够了。您可以考虑将pm.max_requests
设置为非零值,以确保以合理的频率清理连接,并避免在非高峰时段保留一堆未使用的连接。
答案 1 :(得分:1)
最好使用像PgBouncer这样的专用连接池。
在PHP代码出错后,性能应与pg_pconnect
相当,但与PgBouncer will allow to perform a cleanup相当。 pg_pconnect
will not automatically clean open transactions, locks, prepared statements等。
答案 2 :(得分:0)
嗯,pg_pconnect意味着每个PHP后端有一个连接,所以它取决于你有多少后端。使用传统的Apache mod-php设置它不是一个非首发,但你可能会逃脱它。
数据库服务器可以处理数百个空闲连接,但如果它们都同时发出查询,几乎肯定会停止。我已经看到每个核心不超过两个连接的经验法则 - 假设I / O不首先限制你。
常见的方法是运行像pgbouncer这样的连接池,并且每个请求都有php连接。这可以减少连接开销,同时保持并发性。