Si puedes corre un pgtune https://pgtune.leopard.in.ua/#/

No pongas más de la mitad de la RAM si lo haces debes ajustar el /dev/shm ( que es la mitad de la RAM por defecto ).

vacuum soporta jobs en parallelo ( ignoro si por defecto corre en parallelo ) pero un buen numero es algo como el numero de los cores ( alguien con más experiencia puede indicar un numero ) si el vacuum es como compilar en Linux n * 2 + 1 es el numero ( n es el numero de threads ). ( pero no creo ). hay que probar ahi.

Lo que debes mirar en el SAR siempre son las contenciones del disco, el uso del SWAP ( intercambio de hecho ), por ejemplo puedes tener 100% del swap usado, pero si no hay page-in o page-out da lo mismo, el page-in/out es movimiento entre la SWAP y la RAM... ese es el valor importante.

Trata de ver las consultas que se demoran más de 10 segundos, en lo personal hago sintonía fina de las bases de datos en las siguientes iteraciones.

1.- consultas más de 10 min.

2.- consultas más de 1 min.

3.- consultas más de 10 segundos.

4.- consultas final, más de 3 segundos.

Revisa el proyecto dexter, lo estoy usando y ayuda un poco a crear indices basicos. https://github.com/ankane/dexter

Sobre tu problema puntual, por la RAM que me dices que tines asumo que es una maquina real, sí es disco local asegurate que los discos esten bien y que no hay alertas ( que marca es el servidor y que modelo ) si es un HP tengo scripts que me dicen el estado de los discos y controladora.

Revisa si las dos fuentes esten conectadas en el servidor o tres ( depende del modelo ), sí una fuente no esta conectada, el cache se va a desconectar para proteger los datos ( esto lo ví en Oracle Corp en una DELL de tres fuentes, solo una fuente estaba conectada, era un demo y se asumio que estaba bien por que estaba funcionando, no sabían que esas maquinas desconectan el cache cuando una fuente esta muerta ( para el caso de usa solo una fuente y usar el cache es mejor sacar la fuente ), así trabajan los servidores por diseño.

On 6/03/2019 7:10 PM, Carlos T. Groero Carmona wrote:
Horacio estuve revisando la informacion de SAR y el CPU se encontraba ocioso en un 23%, lo que me llama la atencion significativamente, es que solo se esta usando por debajo del 10% de la RAM, solo cuando estos eventos suceden se utiliza un ~12% de la RAM Tengo servidores de prueba y en pre-produccion que utilizan del 40% al 50% de su RAM y no tienen un alto nivel de carga, sin embargo este servidor en produccion que tiene 512GB de RAM tiene un aumento critico en el tiempo de respuesta y la RAM solo se eleva hasta un ~11%.

No se si este dato tenga alguna relacion pero, cuando empece a trabajar aqui el shared_buffers era de 8GB, el uso de la RAM era al 10%, recientemente aumentamos el shared_buffers = 96GB y el uso de la RAM disminuyo al ~5%, olo en eventos criticos la RAM aumenta a un ~11%, una vez este evento termina el uso de la RAm disminuye a un ~5%


On Sat, Mar 2, 2019 at 4:57 PM Horacio Miranda <hmira...@gmail.com <mailto:hmira...@gmail.com>> wrote:

    Revisa SAR para ver que esta pasando con la CPU y los discos.

    Si quieres saber lo que pasa cada minuto, cambia el sar de 10 min
    sample a 1 min.

    On 1/03/2019 7:10 AM, Carlos T. Groero Carmona wrote:
    Hola lista,

    Hace unas semanas les comente que estaba teniendo problemas de
    rendimiento en mi servidor, pero este problema pasa generalmente
    los viernes (cierre de semana) y los cierres de quincena (1, 15 y
    ultimo dia del mes). El resto del tiempo funciona
    maravillosamente bien.

    Por ejemplo, hoy es 28 ultimo dia del mes, he tenido algunos peak
    en el rendimiento de postgres, que han estado afectado por
    autovacuum, cada vez que autovacuum esta trabajando en tablas en
    las cuales se esta escribiendo en ese momento y se detiene mucho
    tiempo, pues se ve afectado el rendimiento de postgres.

    EL valor actual de mi autovacuum_vacuum_cost_limit = 200 y
    mi autovacuum_max_workers = 6
    El viernes pasado la tarde, aumente el cost_limit a 800 y estuvo
    todo el fin de semana sin problemas, pero el lunes alrededor de
    las 11 am obtuve una alerta donde el tiempo de respuesta aumento
    considerablemente, lo disminui a 400 y siguio el problema asi que
    tuve que disminuirlo a 200 nuevamente y todo se tranquilizo.

    Por lo que me da a pensar que podria estar enfrentando un
    problema con el uso de I/O.

    Lo que me llama la atention que el checkpoint_segments = 2048
    cuando pgTune me indica que para un DW debe seria ser 128 y para
    OLTP deberia ser 64.

    Segun wiki.postgresql.org <http://wiki.postgresql.org> en su
    articulo aserca de optimizar la configuracion de tu servidor,
    comenta que valores alto en el checkpoint_segments usaran mayor
    cantidad de disco: "(...) For more write-heavy systems, values
    from 32 (checkpoint every 512MB) to 256 (every 4GB) are popular
    nowadays. *Very large settings use a lot more disk and will cause
    your database to take longer to recover* (...)"

    Algo curioso tambien que me ocurrio hace unas dos semanas atr'as
    y puede estar relacionado con esto, es que ejecute un manual
    vacuum a mi base de datos de produccion en la madrugada cuando la
    carga es mas baja, pero se ejecuto un cron job y empezo a
    importar data desde unos archivos, en el proceso postgres mostro
    un *out of shared memory *por lo que estoy planeando aumentar el
    shared buffer nuevamente a 64GB teniendo en cuenta que mi
    servidor es dedicado solo a postgres, tiene 512GB de RAm y shmmax
    es the 125GB. En el proceso se perdio parte de la data (despues
    se recupero de otra parte) y coinsidio cada vez que se guardo en
    el log un *out of shared memory*,
    NOte: en uno de los logs encontre que el buffer usado para un
    checkpoint fue de 17.5%, normalmente rondea el 10%

    Entonces mi pregunta es, puede este valor tan alto
    de checkpoint_segments afectar el uso de I/O, reflejandose en los
    procesos de vacuum, autovacuum y en la performance de mi servidor?

    Abajo algunos valores de mi configuration:

    checkpoint_segments = 2048

    checkpoint_timeout = 60min

    checkpoint_completion_target = 0.9

    hared_buffers = 24GB

    work_mem = 128MB

    maintenance_work_mem = 4GB

    random_page_cost = 4.0

    effective_io_concurrency = 1



    Una vez mas gracias por cualquier correccion o sugerencia.


    Saludos,

    Carlos





Reply via email to