极其缓慢
我在自己的VPS上安装了PostgreSQL - 访问数据库的软件是一个名为PokerTracker的程序。
PokerTracker在玩扑克的同时登录所有牌局和统计数据。
我希望这可以从几台不同的计算机访问,因此决定将它安装在我的VPS上,经过一些打嗝后,我设法让它连接无误。
然而,表现是可怕的。 我已经做了大量关于'远程postgresql慢'的研究等,我还没有找到答案,所以希望有人能够提供帮助。
注意事项:
我试图执行的查询非常小。 当在VPS上本地连接时,查询立即运行。
在远程运行时,运行查询需要大约1分30秒的时间。
VPS正在运行100MBPS,然后我连接到它的计算机位于8MB线路上。
两者之间的网络通信几乎是即时的,我可以远程连接,没有任何延迟,并且正在运行多个运行MSSQL的网站,所有查询都可以立即运行,无论是远程连接还是本地连接,因此PostgreSQL似乎都是特定的。
我正在运行他们的软件的最新版本的软件和PostgreSQL的最新兼容版本。
该数据库是一个新的数据库,几乎不包含任何数据,我已经运行了真空/分析等所有无济于事,我没有看到任何改进。
我不明白MSSQL如何几乎可以即时查询,但PostgreSQL如此挣扎。
我可以远程登录到VPS IP上的端口5432,没有任何问题,并且正如我所说的那样,查询执行起来只需要很长时间。
我注意到的是,在查询运行的时候,路由器上几乎没有任何带宽正在使用 - 但是我再也不希望它用于简单的查询,但我不确定是否这是问题。 我试过在3个不同的网络上远程连接(包括不同的路由器),但问题仍然存在。
通过局域网通过另一台计算机远程连接即时。
我也编辑了postgre conf文件以允许更多的内存/缓冲区等,但我不认为这是问题 - 我要求它做的非常简单 - 它不应该是密集的。
谢谢,瑞奇
编辑:请注意客户端和服务器都运行Windows。
这是来自配置文件的信息。
pg_hba - currently allowing all traffic: # TYPE DATABASE USER CIDR-ADDRESS METHOD # IPv4 local connections: host all all 0.0.0.0/0 md5 # IPv6 local connections: # host all all ::1/128 md5
和postgresqlconf - 我知道我已经给这个配置提供了大量的缓冲区/内存,只是为了测试它是否是问题 - 仅显示未注释的行:
listen_addresses = '*' port = 5432 max_connections = 100 shared_buffers = 512MB work_mem = 64MB max_fsm_pages = 204800 shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll' log_destination = 'stderr' logging_collector = on log_line_prefix = '%t ' datestyle = 'iso, mdy' lc_messages = 'English_United States.1252' lc_monetary = 'English_United States.1252' lc_numeric = 'English_United States.1252' lc_time = 'English_United States.1252' default_text_search_config = 'pg_catalog.english'
任何其他需要的信息,请让我知道。 感谢你的帮助。
我启用了日志并将日志发送给他们软件的开发人员。 他们的答案是,由于网络延迟,软件最初打算在本地或本地数据库上运行,因此在VPS上运行预计会很慢。
感谢您的所有帮助,但看起来我的想法并不是这样,而是由于软件而非VPS上的PostgreSQL。
谢谢,瑞奇
你可以做一个explain analyze
,它会告诉你在服务器上执行查询的时间 (没有将结果发送给客户端的网络开销)。
如果服务器执行时间非常快(与您所看到的时间相比),则这是一个网络问题。 如果报告的时间与您观察到的非常相似,那么这是PostgreSQL问题(然后您需要发布执行计划并且可能需要PostgreSQL配置)
使用网络监控工具(我建议使用wireshark,因为它可以跟踪许多协议,包括postgresql)以查看网络连接是否正常。 如果连接不好,您将看到丢弃/重新传输的数据包。
链接地址: http://www.djcxy.com/p/4343.html上一篇: extremely slow