Windows环境下PostgreSQL连接速度过慢问题排查求助
解决PostgreSQL本地连接缓慢的问题
我之前碰到过好几次这种全新默认配置下PostgreSQL本地连接慢的情况,你的测试耗时(2.5-3.5秒)完全符合反向DNS解析卡住的特征——虽然你已经关闭了log_hostname,但这个参数只是控制日志是否记录主机名,并不会阻止PostgreSQL在建立连接时对客户端IP做反向解析。
下面是具体的排查和解决步骤:
1. 先确认问题根源
先不用Python,直接用psql命令测试连接耗时,看看是不是和你的代码结果一致:
time psql -h 127.0.0.1 -U xxx -d xx -p 5433 -c "select 1;"
如果这个命令的耗时也在2秒以上,那基本可以锁定是连接配置的问题。
2. 关闭反向DNS解析
修改PostgreSQL的pg_hba.conf配置文件(通常路径是/var/lib/postgresql/<你的版本号>/main/或者/usr/local/pgsql/data/),找到针对本地IP的规则,改成这样:
host all all 127.0.0.1/32 md5
然后打开postgresql.conf,确保以下配置正确:
listen_addresses = '127.0.0.1' # 只监听本地IP,避免不必要的网络解析 tcp_keepalives_idle = 60 tcp_keepalives_interval = 10 tcp_keepalives_count = 10
改完后重启PostgreSQL服务:
sudo systemctl restart postgresql
3. 检查本地hosts文件
确保你的/etc/hosts文件里有正确的本地IP映射,没有这个的话,PostgreSQL解析127.0.0.1时会卡住:
127.0.0.1 localhost localhost.localdomain ::1 localhost localhost.localdomain
4. 再次测试连接
重新运行你的Python测试代码,或者用刚才的psql命令再测一次,正常情况下连接耗时应该降到0.01秒以内。
另外提一句,全新默认配置下,内存类参数(比如shared_buffers)过低基本不会导致本地连接慢,所以优先排查DNS相关的问题就好。
内容的提问来源于stack exchange,提问作者Aldarund
相关产品推荐
相关产品推荐

