My Application has normally 25 to 30 connections and it is doing lot of insert/update/delete operation.
The database size is 100GB.
iowait is at 40% to 45 % and CPU idle time is at 45% to 50%
TOTAL RAM = 8 GB TOTAL CPU = 4
postgresql.conf parametre:
shared_buffers = 2GB
work_mem = 100MB
effective_cache_size = 2GB
maintenance_work_mem = 500MB
autovacuum = off
wal_buffers = 64MB
How can i reduce iowait and CPU idle time. It is slowing all the queries. The queries that used to take 1 sec,it is taking 12-15 seconds.
What changed between the 1 sec regime and the 12-15 second regime? Just growth in the database size?
Index-update-intensive databases will often undergo a collapse in performance once the portion of the indexes which are being rapidly dirtied exceeds shared_buffers + (some kernel specific factor related to dirty_background_bytes and kin)
If you think this is the problem, you could try violating the conventional wisdom by setting shared_buffers 80% to 90% of available RAM, rather than 20% to 25%.