Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 远程Postgresql-非常慢_Performance_Postgresql_Vps - Fatal编程技术网

Performance 远程Postgresql-非常慢

Performance 远程Postgresql-非常慢,performance,postgresql,vps,Performance,Postgresql,Vps,我在自己的VPS上安装了PostgreSQL——访问数据库的软件是一个名为PokerTracker的程序 PokerTracker记录您在玩在线扑克时的所有手牌和统计数据 我想从几台不同的计算机上访问它,所以决定将它安装在我的VPS上,打嗝几下后,我成功地将它连接起来,没有错误 然而,表演是可怕的。我已经做了大量关于“远程postgresql慢速”等的研究,但还没有找到答案,所以我希望有人能够帮助我 注意事项: 我试图执行的查询非常小。在VPS上本地连接时,查询会立即运行 远程运行时,运行查询大

我在自己的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 pg_hba-当前允许所有流量: #类型数据库用户CIDR-ADDRESS方法 #IPv4本地连接: 托管所有0.0.0.0/0 md5 #IPv6本地连接: #主机所有::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' 侦听地址='*' 端口=5432 最大连接数=100 共享缓冲区=512MB 工作内存=64MB 最大fsm页面数=204800 共享的预加载库=“$libdir/plugins/plugin\u debugger.dll” 日志\目标='stderr' 日志记录\u收集器=打开 日志\行\前缀='%t' 日期样式='iso,mdy' lc_messages='English_used.1252' lc_monetary='English_used.1252' lc_numeric='English_used.1252' 立法会时间=‘英语美国1252’ 默认的搜索配置='pg\u catalog.english'
任何其他需要的信息,请让我知道。感谢您的帮助。

使用网络监控工具(我推荐wireshark,因为它可以跟踪许多协议,包括postgresql),查看网络连接是否正常。如果连接不好,您将看到丢弃/重新传输的数据包

可能Postgres正在尝试使用验证您的身份,但该验证不起作用(例如防火墙),并且在允许通过其他方式连接之前必须等待超时

尝试使用psql查询远程服务器的
select version()
——这应该是即时的,因为它不接触磁盘

如果不是即时的,请发布您的
pg_hba.conf
(未注释行)

另一个可能的原因:

  • 使用RevDNS进行身份验证
  • 服务器或客户端防病毒
  • 其他一些连接正在阻塞表或行,因为它没有明确结束

您可以执行
解释分析
,它将告诉您在服务器上执行查询的时间(无需将结果发送到客户端的网络开销)


如果服务器执行时间非常快(与您看到的时间相比),则这是一个网络问题。如果报告的时间与您观察到的时间非常相似,则这是一个PostgreSQL问题(然后您需要发布执行计划,可能还有您的PostgreSQL配置)

我启用了日志记录,并将日志发送给其软件的开发人员。他们的回答是,该软件最初打算在本地或接近本地的数据库上运行,因此在VPS上运行的速度预计会很慢——这是由于网络延迟

谢谢你的帮助,但看起来我没有主意了,这是因为软件,而不是特别是VPS上的PostgreSQL

谢谢,
Ricky

这并不是VPN上pg访问速度慢的原因,但一个可能的解决方案/替代方案是设置TeamPostgreSQL通过浏览器访问pg。它是一个AJAX webapp,包含一些非常方便的功能,用于导航数据和管理数据库

这还可以避免断开连接,根据我的经验,在VPN上使用pg时,这种情况很常见


web访问也有phpPgAdmin,但我提到TeamPostgreSQL,因为它对导航和获取数据库中数据的概览非常有帮助。

这个问题困扰了我一段时间,这个问题让我找到了答案,我想如果有帮助,我会与大家分享

服务器有一个辅助网络接口(eth1),该接口被设置为defau