Extrañamente no volvimos a tener el problema de lentitud!!! fue solo ese día y nunca mas!! De todas maneras hice un script que lo dejo acá por si a alguien le sirve, tomando la sugerencia de Horacio.
#!/bin/bash TMP_FILE="/tmp/explain_tmp_$$.log" LOG_FILE="/home/postgres/data/test.log" START_TIME=$(date +%s) /usr/local/pgsql/bin/psql -d iurixprod -c "$(cat /home/postgres/data/test.sql);" > "$TMP_FILE" 2>&1 END_TIME=$(date +%s) DURATION=$((END_TIME - START_TIME)) # Si la consulta tardó más de 10 segundos, registrar en el log if [ "$DURATION" -gt 10 ]; then echo -e "\n=============================" >> "$LOG_FILE" echo "Consulta lenta detectada ($DURATION segundos) - $(date '+%Y-%m-%d %H:%M:%S')" >> "$LOG_FILE" cat "$TMP_FILE" >> "$LOG_FILE" # Agregar cantidad de sesiones activas echo -e "\n--- Sesiones activas en el momento ---" >> "$LOG_FILE" psql -d nombre_de_tu_bd -t -c "SELECT count(*) FROM pg_stat_activity WHERE state = 'active';" >> "$LOG_FILE" 2>&1 echo "=============================" >> "$LOG_FILE" echo "Consulta lenta registrada en $LOG_FILE" fi # Eliminar archivo temporal rm -f "$TMP_FILE" El mar, 18 feb 2025 a las 6:38, Horacio Miranda (<hmira...@gmail.com>) escribió: > Y hacer un script que guarde el explain (buffers,analyze) select … cuando > el time se demore mas de 10 segundos ? > > Lo corres a cada rato y de esa forma capturas el plan malo vs el plan > bueno ? > > Algo como Lo dejas corriendo en el crontab, sera un poco pesado pero > puede darte luces del plan que esta siguiendo. > > #!/bin/bash > FILE=/tmp/output_$(date +%Y%m%d%H%M)”.log > > SECONDS=0 > psql < consulta.sql > /tmp/output.txt > if [ $SECONDS -gt 10 ] ; then > cp /tmp/output.txt $FILE > echo “Revisar $FILE > fi > > > > On 18 Feb 2025, at 3:59 PM, Guillermo E. Villanueva < > guillermo...@gmail.com> wrote: > > Gracias por tu comentario, si puse la query, no usa prepare, va directo. > > > El El lun, 17 feb 2025 a la(s) 23:57, Carlos T. Groero Carmona < > cton...@gmail.com> escribió: > >> Si, si estas usando prepared statements puede pasar, recisa esto: >> plan_cache_mode >> >> El valor por default is auto, trata de cambiarlo a forced_custom_plan >> >> Regards, >> Carlos >> > >