我有我自己的VPS安装PostgreSQL的 - 访问数据库的软件是一个叫PokerTracker程序。远程PostgreSQL - 极其缓慢
PokerTracker记录所有你的手和统计,同时玩在线扑克。
我希望这可以从几个不同的计算机访问,所以决定将它安装在我的VPS上,并在几次打嗝后,我设法让它连接没有错误。
然而,表现是可怕的。我已经做了大量关于'远程postgresql慢'的研究等,我还没有找到答案,所以希望有人能够提供帮助。
注意事项:
我想执行的查询是非常小的。当在VPS上本地连接时,查询立即运行。
虽然远程运行它,花费约1分钟,30秒到运行查询。
该VPS运行100MBPS,然后我连接到它的计算机是在一个8MB线。
两者之间的网络通信几乎是即时的,我可以远程连接正常,没有任何延迟,并且正在运行多个运行MSSQL的网站,所有查询立即运行,无论是远程连接还是本地连接,因此PostgreSQL似乎都是特定的。
我正在运行他们的软件的最新版本的软件和PostgreSQL的最新兼容版本。
该数据库是一个新的数据库,几乎不包含任何数据,我运行真空/分析等都无济于事,我没有看到任何改进。
我不明白MSSQL如何查询几乎立即又PostgreSQL的挣扎这么多。
我能够telnet到VPS IP上的端口5432,没有任何问题,正如我所说的查询执行它只需要很长时间。
我在做路由器的时候发现查询正在运行,几乎没有任何带宽正在被使用 - 但是我再也不希望它对于一个简单的查询,但我不确定这是否是问题。我试过在3个不同的网络上远程连接(包括不同的路由器),但问题仍然存在。
经由LAN经由另一台机器远程连接是即时的。
我也编辑了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'
任何其他需要的信息,请让我知道。感谢你的帮助。
请发布查询,涉及的表的大小和输出的大小。 – Quassnoi 2011-01-11 12:31:28
这听起来像一个网络问题,而不是一个Postgres问题。如果您使用`psql -h server ...`从客户机执行查询,会发生什么?如果你通过ssh隧道来做什么呢? – 2011-01-11 12:37:19
我知道我会错过重要的信息。我忘了说两个操作系统都在运行Windows。如果有必要,我会发布查询,但这是一个简单的查询,只是查看一个表似乎会导致问题。我无法看到它是如何在本地进行查询的,因为它是即时的,但远程运行却有很大的延迟。 – Ricky 2011-01-11 13:44:23