Hola solo te quiero responder entre lineas para saber un poco mas y ver si puedes darnos unos datos.
> On 14/07/2022, at 3:32 AM, Carlos T. Groero Carmona <cton...@gmail.com> wrote: > > Hola a todos, Hola !!!! > > Estoy migrando de 9.6 a 13 y parte del proceso migratorio es hacer los test > de performance atravez de la aplicacion y las funcionalidades mas importantes > del systema. Lo ideal en migraciones es establecer una base, ejemplo si tienes un test, que sea repetitivo y automatizado. puedes usar wrk https://github.com/wg/wrk si tienes un API. si no jmeter, testninja si la apliacación es mas compleja y web. Ahora para medir solo la base de datos, yo seleccionaría unas 3 consultas primero lo ideal solo select para reportes, una ves esta base, me movería a unas 10 consultas, y luego a un numero que te deje tranquilo, la idea es hacer algo como matematicas cuando demuestras los casos, para N=1, N=2 y luego N=n ( carga real ), finalmente el punto de quiebre. N=n+1. ( esto es complicado a veces ). > > Se nota una degradacion de un 16% en el throughput y un 25% en el tiempo de > respuesta del systema cuando usamos pg13. Si comparas PROD con las versiones nuevas ? o estas comparando una copia de PROD y las versiones nuevas ? La diferencia esta en que la maquina PROD esta en caliente operando y tiene cosas en cache. ( la primera ronda lee cosas de disco a RAM, luego sacas los bloques de RAM ). por lo que para probar lo ideal es tener el sistema caliente ( los primeros resultados los descartas ). > > Si hay una leve mejora en el tiempo de respuesta de postgres solamente 182ms > (9.6) vs 178ms (13). En bases de datos lo mas importante son los planes de ejecución, si tienes las consultas puedes hacer: * explain (buffers,analyze) select ….. ; Yo uso esto para compartir los planes de ejecución con equipos de trabajo. https://explain.depesz.com/ > > Las maquinas virtuales donde esta corriendo postgres son iguales creadas con > scripts. Puede que tengan las mismas CPU, RAM y disco, pero iguales a nivel de infraestructura no van a ser, en storage los espacios iniciales son mas rapidos y los finales son mas lentos. siempre. Si usas vmware lo mas importante es tener los discos Pre Allocated ( no dinámicos ) solo el filesystem de la base de datos. lo que yo hago es crear un disco pre-allocateado y lo asigno a un LVM para luego montarlo en /var/lib/pgsql con virtualBox me di cuenta que la diferencia en performance es 20x ( sí es ridícula la diferencia ). > > Las unicas configuraciones diferentes entre pg9.6 and pg13 son: > - max_parallel_workers_per_gather 32/v9.6 and 4/v13 > - max_parallel_mqitenance_workers NA/v9.6 and 4/v13 > - max_wal_size 4GB/v9.6 and 8GB/v13 > - work_mem 128MB/v9.6 and 256MB/v13 > > Las VM tienen > - 64 vCPU > - 512 GB of Memory > - 32k IOs on disk Para asegurarte que las maquinas son similares, puedes hacer un benchmark. En lo personal como soy DBA Oracle, uso una herramienta llamada Orion para realizar simulaciones de los discos. ( solo los discos ). https://ronekins.com/2019/03/11/storage-io-performance-testing-with-orion-part-1/ Esto explica un poco como se configura. > Cualquier idea o sugerencia es muy bienvenida como siempre. Yo tomaría 3 consultas complicadas, y revisaría los planes de ejecución, dependiendo del plan si tienes ordenamiento en disco puedes subir mas el work_mem ( pero esto te va a comer la RAM ), poner un ojo en el SWAP ( revisar cuando tienes intercambios ). modificar el SAR para que tome muestras cada 1 min ( te da una vista mas granular de las metricas del Linux ) Asumiendo estas con Linux. Si estas con Windows, asegurate que el AV tenga la base de datos ( dónde están los datos ) en la lista de las excepciones. en Atento Chile recuerdo que cuando revise un postgresql y lo querian matar revise eso y al poner la excepción la maquina de destapo :D Sobre redes, revisar si tienes paquetes perdidos, los jdbc ( suponiendo usas Java ) en general no les gusta tener paquetes perdidos. Sobre el APP, si quieres ver lo que esta pasando adentro, instala New Relic agente de infraestructura y las sondas para ver el APP, esto te dice mas menos donde hay contenciones. Puedes usar otros solo que este por defecto viene mejor configurado y me da mejores resultados que otros ( pero esto es algo personal ) https://newrelic.com/ Y lo mas importante, recuerda que comparar PROD con otros ambientes puede ser complicado, yo copiaria PROD (TEST) y generaria, varios TEST con la misma version y probaria todas las maquinas con la misma base creo que es la unica forma para decir, yep la infra es igual. ( si es que no quieres revisar las maquinas de otra forma ). > > Gracias. Espero que esto te ayude un poco. Puede que haya puesto mucho… sorry por lo largo de este correo. Saludos, Horacio Miranda.