在 Windows 10 上连接 postgresql 的时间很慢

Ald*_*und 7 postgresql performance windows postgresql-performance

在我的 Win 10 机器上连接到 postgresql 的时间慢得难以置信。连接需要 2.5-3.5 秒。

$ time 'c:/Program Files/PostgreSQL/10/bin/psql.exe' -h 127.0.0.1 -p 5433 -U xxx -c 'select true'
 bool
------
 t
(1 row)


real    0m3.416s
user    0m0.015s
sys     0m0.000s
Run Code Online (Sandbox Code Playgroud)

我尝试使用 psycopg2 python 驱动程序的同时。postgresql 版本 9 和 10 的时间相同。另一方面,连接到 mysql 的时间为 0.002,仅与 postgresql 相关。

在此处输入图片说明

这里有来自 postgresql 的 max debug 的相关日志

2018-03-19 21:24:43.654 +03 [10048] DEBUG:  00000: forked new backend, pid=21268 socket=5072
2018-03-19 21:24:43.654 +03 [10048] LOCATION:  BackendStartup, postmaster.c:4099
2018-03-19 21:24:45.248 +03 [21268] LOG:  00000: connection received: host=127.0.0.1 port=9897
Run Code Online (Sandbox Code Playgroud)

它分叉新的后端,然后仅 2 秒后记录收到的连接

UPD 即使我设法避免了 postgresql 的连接延迟(例如通过 pgbouncer,或者如果 postgresql 在 docker 中运行)请求仍然需要 1.3-2 秒,但是从第一个发送的包到最后一个只有 0.022 秒,所有其他时间都知道发生了什么,但是不是客户端和服务器之间的网络通信。如果在 docker 中运行相同的代码 - 0.025 秒。从 Windows - 1.3-2sec 但网络交互只有 0.022sec

实际上有两个问题可能是由相同或不同的事情引起的,不知道。

  1. Postgresql 由于未知原因未发送数据包 1.8 秒

  2. 即使消除了第一个问题并且网络交互降低到 0.022 秒,整个过程仍然需要 1.3-2 秒而不是 2.5-3.5(使用 psql 或 psycopg2)

小智 6

如果 PostgreSQL 仅在本地主机上侦听,请确保在 中设置 IPv4 和 IPv6 这两个地址postgresql.conf

listen_addresses = '127.0.0.1,::1'


Eva*_*oll 1

RST意味着有东西告诉您连接已关闭或需要重置(重新初始化)。我会看看

  1. 盒子上的软件防火墙。
  2. 防病毒。
  3. 底层网络基础设施破坏了机器在本地主机上与自身建立社区的能力,对 AWS 充满恶意。

不能保证这就是问题所在。我希望这些箭头根据数据包的源和目的地(网络堆栈上的传入和传出表)切换方向。在该显示中,所有箭头都朝向同一方向。这使得该显示很难解析。