Php PDO建立到Azure PostgreSQL的连接非常慢

Php PDO建立到Azure PostgreSQL的连接非常慢,php,postgresql,azure,pdo,kubernetes,Php,Postgresql,Azure,Pdo,Kubernetes,我在Kubernetes内部有一个PHP应用程序,它作为基于Alpine Linux的Docker容器运行。一切都进行得很顺利,直到我尝试用测试数据库删除容器并用替换它。这导致延迟显著增加,从250毫秒以下增加到1500毫秒以上 根据profiler,大部分时间都花在建立到数据库的连接上连接建立后,SQL查询本身将在大约20毫秒内运行。 我尝试使用IP而不是地址,但速度仍然很慢。 我尝试使用psql从容器连接,但速度很慢(请参阅下面的完整命令) 我尝试使用DNS解析,速度很快 数据库和Kube

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

根据profiler,大部分时间都花在建立到数据库的连接上连接建立后,SQL查询本身将在大约20毫秒内运行。

  • 我尝试使用IP而不是地址,但速度仍然很慢。
  • 我尝试使用psql从容器连接,但速度很慢(请参阅下面的完整命令)
  • 我尝试使用DNS解析,速度很快
  • 数据库和Kubernetes节点运行在同一区域,甚至尝试了相同的资源组,不同的网络设置,但都没有任何帮助
  • 我尝试在客户端和服务器上要求/禁用SSL模式
  • 我尝试在一个已经建立的连接中反复运行“select 1”,速度很快(平均1.2ms,中间值0.9ms)(请参阅下面的完整查询)
什么会导致这种延迟? 如何进一步调试/调查此问题


用于尝试连接的psql命令:

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

查询速度

\timing 
SELECT;
\watch 1

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


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

您是否尝试过从Kubernetes pod连接到postgres db?谢谢您的建议。我试过了,速度很慢(600毫秒+),库伯内特斯星系团在哪里?蔚蓝色的什么地区?群集和数据库都在美国西部2的同一地区。数据库与节点位于同一资源组中。听起来在kubernetes节点和PostgreSQL之间有一些速率限制。您可以向云提供商申请支持票证进行检查。谢谢您的回答。由于Azure决定保护pg,您是否有延迟的来源?不,这是完全基于我的观察得出的结论。我可能完全错了。