首页 > 解决方案 > PDO 建立与 Azure PostgreSQL 的连接非常慢

问题描述

我有 PHP 应用程序作为基于 Kubernetes 内的 Alpine Linux 的 Docker 容器运行。一切都很顺利,直到我尝试使用测试数据库删除容器并用Azure PostgreSQL替换它。这导致延迟从 250 毫秒以下显着增加到 1500 毫秒以上。

根据分析器,大部分时间都花在PDO 构造函数上,该构造函数正在建立与数据库的连接。SQL 查询本身,在建立连接后,会在大约 20 毫秒内运行。

什么会导致这种延迟?如何进一步调试/调查此问题?


用于尝试连接的 psql 命令:

psql "sslmode=disable host=host dbname=postgres user=user@host.postgres.database.azure.com password=password" -c "select 1"

查询速度

\timing 
SELECT;
\watch 1

标签: phppostgresqlazurepdokubernetes

解决方案


据我所知,这是由 PostgreSQL 之上的 Azure 特定身份验证引起的。不幸的是,Azure 支持无法从他们这边提供帮助。

使用连接池(PgBouncer)解决了这个问题。这是我们必须维护的另一部分基础设施(docker 文件、配置/秘密管理等),我们希望将其外包给云提供商。


推荐阅读