1

我有一个运行时PHP调用的应用程序。页面 A 收到一条消息和一些信息。页面 B 进行路由。页面 C 使用 CURL 调用外部应用程序。当我投入生产时,我每月将收到多达 1-2 百万个请求。GET parametersPG and nginx

我的问题涉及 pg_pconnect 函数。如果有来自不同位置的呼叫,连接是否会重用?我的意思是,每次为页面 A 建立一个简单的连接并关闭它会更好吗?(来自不同位置的服务器将调用我的应用程序)对于页面 B 和 C,脚本将在无限循环中调用它们(如果没有消息要处理,则等待 10 秒)。由于请求总是来自同一个位置,是否值得为页面 B 和 C 使用永久连接?

我希望我的解释足够清楚。

谢谢!

4

1 回答 1

1

一般来说,我认为在您的情况下,您可能会从持久连接中看到一些好处。也有缺点,但只要你牢记它们,这些都是可以管理的。但是,您可能想要更进一步并考虑一个实际的连接池。

最大的问题是,当并发连接数低于每个 CPU 内核约 2 个加上每个磁盘主轴 1 个时(由于 I/O 等待时间),通常 PostgreSQL 表现最好。当然,这并不准确,但它可以让您了解您的硬件和资源的预期。

在 Linux/UNIX 平台上,连接启动/拆除的开销并不大,但管理并发性对于保持快速运行可能至关重要。因此,如果我需要一些额外的控制,我将从持久连接开始,然后转移到连接池。

主要缺点是当其他人连接到数据库时,您无法执行某些数据库操作。如果您需要从备份中恢复,您可能需要确保先断开 Web 应用程序。

于 2013-05-24T02:46:28.630 回答