我在Kubernetes内将PHP应用程序作为基于Alpine Linux的Docker容器运行。一切顺利,直到我尝试使用测试数据库删除容器并将其替换为Azure PostgreSQL。这导致延迟时间从250ms以下大幅增加到1500ms以上。
根据事件探查器,大多数时间都花在PDO constructor中,后者正在建立与数据库的连接。 建立连接后,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
答案 0 :(得分:0)
据我所知,这是由PostgreSQL之上的Azure特定身份验证引起的。不幸的是,Azure支持无法从他们这方面提供帮助。
使用连接池(PgBouncer)解决了此问题。这是我们必须维护的另一基础架构(docker文件,配置/秘密管理等),我们希望将其外包给云提供商。