adama_prod=# SHOW shared_buffers;
shared_buffers
----------------
64GB
From: Pavel Stehule [mailto:pavel.stehule@xxxxxxxxx]
Sent: Wednesday, October 21, 2015 12:26 PM
To: Jamie Koceniak
Cc: pgsql-performance@xxxxxxxxxxxxxx
Subject: Re: Recursive query performance issue
2015-10-21 20:51 GMT+02:00 Jamie Koceniak <jkoceniak@xxxxxxxxxxxxx>:
Hi Pavel,
Or were you referring to SHMMAX?
value of shared_buffers - run SQL statements SHOW shared_buffers;
Regards
Pavel
Thanks
From: Jamie Koceniak
Sent: Wednesday, October 21, 2015 11:40 AM
To: 'Pavel Stehule'
Cc: pgsql-performance@xxxxxxxxxxxxxx
Subject: RE: Recursive query performance issue
Ok
df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
tmpfs 406G 0 406G 0% /run/shm
Ok I will try lowering it.
From: Pavel Stehule [mailto:pavel.stehule@xxxxxxxxx]
Sent: Wednesday, October 21, 2015 11:24 AM
To: Jamie Koceniak
Cc: pgsql-performance@xxxxxxxxxxxxxx
Subject: Re: Recursive query performance issue
2015-10-21 19:55 GMT+02:00 Jamie Koceniak <jkoceniak@xxxxxxxxxxxxx>:
Hi Pavel,
Thanks for the reply.
1. The queries aren’t waiting on any locks.
The query has a recursive join that uses a table with only 80k records and that table is not updated often.
2. The I/O load was not high. CPU utilization was very high and load was very high.
We have a large effective_cache_size = 512GB (25% of total memory)
so your server has 2TB RAM? It is not usual server - so this issue can be pretty strange :(
What is size of shared memory? Probably is significantly lower than effective_cache_size? Try to reduce effective cache size to be lower than shared buffers
Regards
Pavel
Thanks,
Jamie
From: Pavel Stehule [mailto:pavel.stehule@xxxxxxxxx]
Sent: Wednesday, October 21, 2015 12:04 AM
To: Jamie Koceniak
Cc: pgsql-performance@xxxxxxxxxxxxxx
Subject: Re: Recursive query performance issue
Hi
2015-10-20 19:34 GMT+02:00 Jamie Koceniak <jkoceniak@xxxxxxxxxxxxx>:
Version:
-----------------------------------------------------------------------------------------------
PostgreSQL 9.1.14 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.7.2-5) 4.7.2, 64-bit
Query Plan
http://explain.depesz.com/s/4s37
Normally, this query takes around 200-300 ms to execute.
However when several queries are run concurrently, query performance drops to 30-60 seconds.
there can be few reasons:
1. locking - are you sure, so your queries don't wait on locks?
2. issues with cache stability - is there high IO load? You can try to increase effective_cache_size (or decrease if you have not enough memory)
Regards
Pavel