extremely slow

I have setup PostgreSQL on a VPS I own - the software that accesses the database is a program called PokerTracker.

PokerTracker logs all your hands and statistics whilst playing online poker.

I wanted this accessible from several different computers so decided to installed it on my VPS and after a few hiccups I managed to get it connecting without errors.

However, the performance is dreadful. I have done tons of research on 'remote postgresql slow' etc and am yet to find an answer so am hoping someone is able to help.

Things to note:

The query I am trying to execute is very small. Whilst connecting locally on the VPS, the query runs instantly.

While running it remotely, it takes about 1 minute and 30 seconds to run the query.

The VPS is running 100MBPS and then computer I'm connecting to it from is on an 8MB line.

The network communication between the two is almost instant, I am able to remotely connect fine with no lag whatsoever and am hosting several websites running MSSQL and all the queries run instantly, whether connected remotely or locally so it seems specific to PostgreSQL.

I'm running their newest version of the software and the newest compatible version of PostgreSQL with their software.

The database is a new database, containing hardly any data and I've ran vacuum/analyze etc all to no avail, I see no improvements.

I don't understand how MSSQL can query almost instantly yet PostgreSQL struggles so much.

I am able to telnet to the port 5432 on the VPS IP with no problems, and as I say the query does execute it just takes an extremely long time.

What I do notice is on the router when the query is running that hardly any bandwidth is being used - but then again I wouldn't expect it to for a simple query but am not sure if this is the issue. I've tried connecting remotely on 3 different networks now (including different routers) but the problem remains.

Connecting remotely via another machine via the LAN is instant.

I have also edited the postgre conf file to allow for more memory/buffers etc but I don't think this is the problem - what I am asking it to do is very simple - it shouldn't be intensive at all.

Thanks, Ricky

Edit: Please note the client and server are both running Windows.

Here is information from the config files.

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

And postgresqlconf - I'm aware I've given some mammoth amount of buffers/memory to this config, just to test if it was the issue - showing uncommented lines only:

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'

Any other information required, please let me know. Thanks for all your help.


I enabled logging and sent the logs to the developers of their software. Their answer was that there software was originally intended to run on a local or near local database so running on a VPS would be expectedly slow - due to network latency.

Thanks for all your help, but it looks like I'm out of ideas and it's due to the software, rather than PostgreSQL on the VPS specifically.

Thanks, Ricky


You can do an explain analyze which will tell you the execution time of the query on the server (without the network overhead of sending the result to the client).

If the server execution time is very quick (compared to the time you are seeing) than this is a network problem. If the reported time is very similar to what you observe on your side, it's a PostgreSQL problem (and then you need to post the execution plan and possibly your PostgreSQL configuration)


Use network monitoring tools (I reccomend wireshark, because it can trace many protocols, including postgresql's) to see if network connection is ok. You will see dropped/retransmitted packets if the connection is bad.

链接地址: http://www.djcxy.com/p/4344.html

上一篇: 如何迭代Bash脚本中的参数

下一篇: 极其缓慢