Tareas: jueves, 13 de enero de 2022

13 enero 2022

Pues hoy toca estudio y reparaciones con el servidor secundario porque sigue haciendo cosas muy raras. Tengo otras cosillas pero son secundarias por el momento.

Varios

  • Empiezo el día creando un alias para la cuenta de un comercial que tuvimos hace un tiempo y que dimos de baja. ¿ Por qué ? Pues porque alguien ha querido aprovechar su móvil para un familiar y el vendedor que lo tenía lo dio de alta en varios servicios (Samsung incluido) con el correo de empresa. Así que he creado un alias de el antiguo correo para Luismi, que le han «encargado» la gloriosa tarea, pudiese recibir cualquier notificación para dar de baja el servicio.
  • He escrito al muchacho externo 2 para que se ocupe de enderezar las ñapas en el Intrastat del muchacho externo 1 tiempo atrás. El contable me dice que a ver si hay suerte y no nos cobra. Pobre. No he querido desilusionarle pero va a cobrarnos. Es más, debe cobrarnos. Que te hayas acostumbrado a mi tarifa plana no significa que los demás lo contemplen.

Servidor ss.venexma.net

Nada, el servidor sigue igual que ayer. Ráfagas brutales de lecturas de continuo, todas hechas por PostgreSQL, y de las que no tengo idea de por qué.

Pero tengo un plan:

  • Averiguar qué está haciendo PostgreSQL
  • Determinar si es necesario o no:
    • Si es que sí hay que limitarlo todo lo posible.
    • Si es que no ¿ cómo lo anulo ?

El servidor PostgreSQL

Pues mira, lo había ido retrasando bastante pero veo que no me queda otra que hacerle frente. Entre las búsquedas en la red para entender qué ocurre con la base de datos y sus lecturas locas he encontrado varias referencias y voy a ir viendo cuál de ellas podría hacerme entender más rápido la situación.

Extensión pg_stat_statements

No sé desde qué versión esta extensión está incluida en el paquete postgresql pero como el muchacho externo 1 me dejó colocada la versión 12 he tenido mucha suerte y está incluida. Para instalarla y emplearla con una cuenta concreta (odb_beta) que no es superusuario hay que hacer lo siguiente:

  1. Editar la configuración del servidor en /etc/postgresql/12/main/postgresql.conf y añadir la extensión en shared_preload_libraries = 'pg_stat_statements'
  2. Reiniciar el servidor PostgreSQL
  3. Entrar como administrador # su sudo -u postgresql pgsql y crear la extensión:
    1. Conectar con la base de datos
    2. Crear la extensión: create extension pg_stat_statements;
    3. Dar permisos a nuestro usuario en la extensión: grant SELECT on pg_stat_statements to odb_beta ;
  4. Acceder a la base de datos con odb_beta y recuperar información: select calls, total_time, query from pg_stat_statements;

Luego queda interpretar los resultados, claro. Yo por el momento sólo he visto que hay consultas que tardan 71 segundos, aunque se realizan sólo una vez, pero otras que tardan 24 segundos y se llaman más de 250 veces. No está nada mal pero tengo que ver si hay algo más sencillo (porque ya estoy bastante tocado hoy).

Programa pgbadger

Pues el programa éste tiene pinta de ser muy útil. En su documentación indican los preparativos que hay que hacer en el servidor para que los registros le sean de alguna utilidad. Emplea Perl y los registros del servidor; añade también una biblioteca Javascript y otra CSS y la salida son archivos HTML que no necesitan más. Pueden crear informes incrementales y registrar en gráficos muchas cosas: consultas lentas, conexiones, consumo de memoria, …

pg_top

Pues esta es otra herramienta que también estoy mirando para ver si alguien me señala el blanco de mis pesquisas. En este caso se centra en los procesos que emplea el servidor PostgreSQL y parece que hay pistas interesantes. Concretamente la de los procesos idle in transaction que suelen tener una enorme duración. Aquí explican también cuáles son los posibles problemas de que un proceso tenga abierta una transacción, que incluye bloqueo de tuplas y demás, y no esté haciendo nada.

Resumen de la búsqueda

Esta tarde intentaré avanzar un poco más. Ahora estoy cansado de tanta búsqueda entre muros de texto de documentación (el manual de lsof es un buen ejemplo) y tengo que parar un poco.

Referencias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *