Hi Nicolas,
Here is the tunning I apply on my (5) servers (Debian Wheezy)
- create an empty file pg_memory.sh in /root directory and copy/paste the code below :
page_size=`getconf PAGE_SIZE`
phys_pages=`getconf _PHYS_PAGES`
shmall=`expr $phys_pages / 2`
shmmax=`expr $shmall \* $page_size`
echo kernel.shmmax = $shmmax
echo kernel.shmall = $shmall
echo 'Edit /etc/sysctl.conf and apply with : sysctl -p'
- as root execute command :
bash pg_memory.sh
- As notified in the script, copy/paste the result of the script in /etc/sysctl.conf and execute command :
sysctl -p
- You should now have these parameters at the end of sysctl.conf (this is an example):
kernel.shmmax = 2107961344
kernel.shmall = 514639
- now install pgtune (apt-get install pgtune)
- as root, execute command :
pgtune -i /etc/postgresql/9.1/main/postgresql.conf -o pgsql.conf
- This will duplicate the postgresql.conf and add some parameters at the end of the file.
- Just open the new file (/root/pgsql.conf)
- Copy/past the end of the file (lines with pgtune wizard as comment) in the real one ( /etc/postgresql/9.1/main/postgresql.conf ) . Backup it first!
- Restart the server
Note : change path to postgresql.conf according to your OS/Server
PgTune will set parameters according to your system (OS, HD, Memory, etc).
I always trust pgtune and copy/paste "as is" in postgresql.conf. For now, all my servers are running well.
Hope this helps