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
实际上有两个问题可能是由相同或不同的事情引起的,不知道。
Postgresql 由于未知原因未发送数据包 1.8 秒
即使消除了第一个问题并且网络交互降低到 0.022 秒,整个过程仍然需要 1.3-2 秒而不是 2.5-3.5(使用 psql 或 psycopg2)
小智 6
如果 PostgreSQL 仅在本地主机上侦听,请确保在 中设置 IPv4 和 IPv6 这两个地址postgresql.conf。
listen_addresses = '127.0.0.1,::1'。
RST意味着有东西告诉您连接已关闭或需要重置(重新初始化)。我会看看
不能保证这就是问题所在。我希望这些箭头根据数据包的源和目的地(网络堆栈上的传入和传出表)切换方向。在该显示中,所有箭头都朝向同一方向。这使得该显示很难解析。
| 归档时间: |
|
| 查看次数: |
3363 次 |
| 最近记录: |