> -----Mensaje original-----
> De: Diego Ayala
> 
> buenas tardes listeros quisiera pedirles algo de ayuda para 
> mi configuración ya que estoy teniendo algunos problemas de swap.
> Mi configuración es la siguiente: 
> - PostgreSQL 8.4.1 de 64 bits
> - Memoria 10GB
> - Swap 2GB
> -Centos 5.3
> - 8 core
> 
> Mi problema es que con toda esa memoria que tengo igualmente 
> sigue utilizando el swap, y generalmente utiliza  diariamente 
> entre 9 y 10 GB. Es un sistema transaccional web, con un 
> promedio de 100 a 150 conexiones concurrentes, intente 
> basarme en la experiencia y algunos tips de tunning y 
> performance, no se si igualmente lo he configurado mal, o 
> donde puede ser el problema que tenga tanto consumo de 
> memoria, y x sobre todo no lo libera.. de ahi que no se si es 
> mi configuración de postgreSQL o la del SO.
> 
> les paso algunos de los parametros
> 
> 
> listen_addresses = '*'         
>                                        
> #port = 5432                          
> max_connections = 500                  
> 
> 
> # Kerberos and GSSAPI
> #krb_server_keyfile = ''
> #krb_srvname = 'postgres'              
> #krb_caseins_users = off
> 
> # - TCP Keepalives -
> # see "man 7 tcp" for details
> 
> tcp_keepalives_idle = 900           
>                                       
> tcp_keepalives_interval = 90          
>                                       
> tcp_keepalives_count = 5              
> 
> # - Memory -
> 
> shared_buffers = 2GB                  
>                                      
> #temp_buffers = 8MB                  
> #max_prepared_transactions = 0         
> 
> work_mem = 8MB                       
> maintenance_work_mem = 512MB       
> 
> effective_cache_size = 4GB
> 

Diego, tus seteos son razonables si el servidor está dedicado a Postgres. Si
bien work_mem = 8MB te implica 1.5GB de memoria para tus 150 usuarios esto
no debiera ser un problema, aunque para esa cantidad de conexiones te
sugeriría bajarlo a 2MB. Mejor sugerencia aún para tu escenario es que
utilices un pool y limites a unas 40 o 50 conexiones simultáneas a la base. 

Tirá un 'free -ml' cuando veas que ocupa mucho swap y posteá la salida.
Tambien podés en ese momento verificar los procesos de postgres ordenados
por consumo de memoria:

ps ax -o rss,user,pid,pmem,pcpu,command --user postgres | sort -n

o elimina '--user postgres' para ver los procesos de todos los usuarios.

Saludos,
Fernando.

--
TIP 8: explain analyze es tu amigo

Responder a