I'm in the process of upgrading from
postgres 7.4.8 to 9.0.4 and wanted to run my decisions past some folks who can
give me some input on whether my decisions make sense or not.
It's basically a LAPP configuration and on a busy day we probably get in the neighborhood of a million hits. Server Info:
- 4 dual-core AMD Opteron 2212 processors,
2010.485 MHz
- 64GB RAM
- 16 67GB RAID 1 drives and 1 464GB RAID 10
drive (all ext3)
- Linux 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30
EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
There are 3 separate databases:
DB1 is 10GB and consists of multiple tables that
I've spread out so that the 3 most used have their data and indexes on 6
separate RAID1 drives, the 3 next busiest have data & index on 3 drives, and
the remaining tables and indexes are on the RAID10 drive. The WAL for all is on
a separate RAID1 drive.
The others are very write-heavy, started as one
table within the original DB, and were split out on an odd/even id # in an
effort to get better performance:
DB2 is 25GB with data, index, and WAL all on
separate RAID1 drives.
DB3 is 15GB with data, index, and WAL on separate
RAID1 drives.
Here are the changes I made to postgres.conf. The
only differences between the conf file for DB1 and those for DB2 & 3 are the
port and effective_cache_size (which I made slightly smaller -- 8 GB instead of
10 -- for the 2 write-heavy DBs). The 600 max connections are often idle and
don't get explicitly closed in the application. I'm looking at connection
pooling as well.
autovacuum = on autovacuum_analyze_threshold = 250 autovacuum_freeze_max_age = 200000000 autovacuum_max_workers = 3 autovacuum_naptime = 10min autovacuum_vacuum_cost_delay = 20ms autovacuum_vacuum_cost_limit = -1 autovacuum_vacuum_threshold = 250 checkpoint_completion_target = 0.7 checkpoint_segments = 64 checkpoint_timeout = 5min checkpoint_warning = 30s deadlock_timeout = 3s effective_cache_size = 10GB log_autovacuum_min_duration = 1s maintenance_work_mem = 256MB max_connections = 600 max_locks_per_transaction = 64 max_stack_depth = 8MB shared_buffers = 4GB vacuum_cost_delay = 10ms wal_buffers = 32MB wal_level = minimal work_mem = 128MB
ANY comments or suggestions would be greatly
appreciated.
Thank you,
Midge
|