Postegresql在Windows

时间:2018-03-18 23:27:16

标签: windows postgresql psycopg2

我注意到与PostgreSQL的连接非常慢。

import psycopg2
import time

start_time = time.time()
try:
    db = psycopg2.connect("dbname='xx' user='xxx' host='127.0.0.1' password='xxx' port='5433'")
except Exception as e:
    print(e)
    exit(1)

print('connect time', time.time() - start_time)

通常连接时间为2.5-3.5秒。 连接时间3.3095390796661377

它几乎是新安装的PostgreSQL的默认配置。 我关闭了log_hostname但它没有改变任何东西。我已经运行了PostgreSQL 9.4和10,两者都有同样的问题。 我正在使用这台机器进行开发,但即便如此,我注意到它,因为我的Django请求需要2.5-3.5秒,这使得它甚至在开发时都无法忍受。

Windows 10 Python 2/3 psycopg2 2.7.4

Here packet dump

这里有来自PostgreSQL的最新调试的相关日志

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

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

UPD

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

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

1)Postgresql因未知原因未发送数据包1.8秒

2)即使第一个问题被消除,网络交互下降到0.022秒,整个事情仍需要1.3-2秒(使用psql或psycopg2)

0 个答案:

没有答案