Postgresql PDO查询在高延迟、高带宽连接上非常慢

Postgresql PDO查询在高延迟、高带宽连接上非常慢,postgresql,Postgresql,运行postgresql 9.x(9.1-9.3) 我有一个使用php的PDO库构建的自定义web应用程序。我们应用程序中的每个查询都使用准备好的语句(通过我们的内部PDO包装库) 我们的生产系统使用AWS EC2小实例作为web服务器,使用RDS作为应用服务器。 对于本地开发,我的本地机器充当web服务器,运行MacOSX(Mavericks)的办公机器充当数据库 当我在工作时,我通常可以ping我的本地officedb服务器,并获得1-5ms的ping时间。一切都进行得很好,页面加载时间非常

运行postgresql 9.x(9.1-9.3)

我有一个使用php的PDO库构建的自定义web应用程序。我们应用程序中的每个查询都使用准备好的语句(通过我们的内部PDO包装库)

我们的生产系统使用AWS EC2小实例作为web服务器,使用RDS作为应用服务器。 对于本地开发,我的本地机器充当web服务器,运行MacOSX(Mavericks)的办公机器充当数据库

当我在工作时,我通常可以ping我的本地officedb服务器,并获得1-5ms的ping时间。一切都进行得很好,页面加载时间非常快,我的内部计时器显示PHP在大约12毫秒内从开始到结束运行页面

现在,当我把我的工作笔记本电脑带回家时,问题来了——从家里,我对office DB服务器的ping时间大约为50-60毫秒。如果我在家里运行我的开发机器,现在每次加载页面需要5-10秒。当然,每个页面加载有4个db查询,这是非常非常少的数据。我尝试过TCP_NOWAIT设置,我尝试过在本地机器上加载pgbouncer,并与远程数据库建立持久连接——到目前为止没有任何帮助

在对查询计时时,我们有一个简单的查询,它返回100字节的数据,这些数据在本地运行.0006秒,而远程运行大约需要1秒。最后,我要说的是,它似乎只与延迟有关,无论查询返回多少数据,它都比在本地运行时通常需要大约1秒的时间。。给予或接受

我只是想知道是否有人能帮我解决这个延迟可能是什么。似乎每一个查询,不管有多少数据,都会带来大约一秒钟的延迟。奇怪的是,当我在连接到远程数据库的机器上运行PGAdmin时,运行简单查询所需的时间远远不够


有没有人有其他想法可以尝试?我没有运行SSL DB连接,也没有使用任何压缩,如果有必要,我愿意尝试,但是,这是我以前没有做过的一件事,我怀疑这对延迟有帮助。

检查日志,PDO可能会运行比您预期的更多的查询。是的,在
postgresql.conf
中设置
log\u statement=all
,看看真正运行的是什么。如果您有一些n+1选择操作正在进行,这将很容易解释问题。我要做的另一件事是使用Wireshark查看协议上实际发生了什么,查看延迟发生的确切位置。