{"id":731,"date":"2022-01-13T14:33:21","date_gmt":"2022-01-13T13:33:21","guid":{"rendered":"https:\/\/esferas.org\/mldt\/?p=731"},"modified":"2022-01-13T14:46:42","modified_gmt":"2022-01-13T13:46:42","slug":"tareas-jueves-13-de-enero-de-2022","status":"publish","type":"post","link":"https:\/\/esferas.org\/mldt\/tareas-jueves-13-de-enero-de-2022\/","title":{"rendered":"Tareas: jueves, 13 de enero de 2022"},"content":{"rendered":"\n<p>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.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h3 class=\"wp-block-heading\">Varios <\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Empiezo el d\u00eda creando un alias para la cuenta de un comercial que tuvimos hace un tiempo y que dimos de baja. \u00bf Por qu\u00e9 ? Pues porque alguien ha querido aprovechar su m\u00f3vil para un familiar y el vendedor que lo ten\u00eda lo dio de alta en varios servicios (Samsung incluido) con el correo de empresa. As\u00ed que he creado un alias de el antiguo correo para Luismi, que le han \u00abencargado\u00bb la gloriosa tarea, pudiese recibir cualquier notificaci\u00f3n para dar de baja el servicio. <\/li><li>He escrito al muchacho externo 2 para que se ocupe de enderezar las \u00f1apas en el Intrastat del muchacho externo 1 tiempo atr\u00e1s. 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\u00e1s, debe cobrarnos. Que te hayas acostumbrado a mi tarifa plana no significa que los dem\u00e1s lo contemplen. <\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Servidor ss.venexma.net<\/h3>\n\n\n\n<p>Nada, el servidor sigue igual que ayer. R\u00e1fagas brutales de lecturas de continuo, todas hechas por PostgreSQL, y de las que no tengo idea de por qu\u00e9. <\/p>\n\n\n\n<p>Pero tengo un plan:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Averiguar qu\u00e9 est\u00e1 haciendo PostgreSQL<\/li><li>Determinar si es necesario o no:<ul><li>Si es que s\u00ed hay que limitarlo todo lo posible. <\/li><li>Si es que no \u00bf c\u00f3mo lo anulo ? <\/li><\/ul><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">El servidor PostgreSQL<\/h3>\n\n\n\n<p>Pues mira, lo hab\u00eda ido retrasando bastante pero veo que no me queda otra que hacerle frente. Entre las b\u00fasquedas en la red para entender qu\u00e9 ocurre con la base de datos y sus lecturas locas he encontrado varias referencias y voy a ir viendo cu\u00e1l de ellas podr\u00eda hacerme entender m\u00e1s r\u00e1pido la situaci\u00f3n. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Extensi\u00f3n pg_stat_statements<\/h4>\n\n\n\n<p>No s\u00e9 desde qu\u00e9 versi\u00f3n esta extensi\u00f3n est\u00e1 incluida en el paquete <em>postgresql<\/em> pero como el muchacho externo 1 me dej\u00f3 colocada la versi\u00f3n 12 he tenido mucha suerte y est\u00e1 incluida. Para instalarla y emplearla con una cuenta concreta (<em>odb_beta<\/em>) que no es  superusuario hay que hacer lo siguiente:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Editar la configuraci\u00f3n del servidor en <em>\/etc\/postgresql\/12\/main\/postgresql.conf<\/em> y a\u00f1adir la extensi\u00f3n en <code>shared_preload_libraries = 'pg_stat_statements'<\/code><\/li><li>Reiniciar el servidor PostgreSQL<\/li><li>Entrar como administrador # su sudo -u postgresql pgsql y crear la extensi\u00f3n: <ol><li>Conectar con la base de datos<\/li><li>Crear la extensi\u00f3n: <code>create extension pg_stat_statements;<\/code><\/li><li>Dar permisos a nuestro usuario en la extensi\u00f3n: <code>grant SELECT on pg_stat_statements to odb_beta ;<\/code><\/li><\/ol><\/li><li>Acceder a la base de datos con <em>odb_beta<\/em> y recuperar informaci\u00f3n: <code>select calls, total_time, query from pg_stat_statements;<\/code><\/li><\/ol>\n\n\n\n<p>Luego queda interpretar los resultados, claro. Yo por el momento s\u00f3lo he visto que hay consultas que tardan 71 segundos, aunque se realizan s\u00f3lo una vez, pero otras que tardan 24 segundos y se llaman m\u00e1s de 250 veces. No est\u00e1 nada mal pero tengo que ver si hay algo m\u00e1s <em>sencillo<\/em> (porque ya estoy bastante tocado hoy).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Programa pgbadger<\/h4>\n\n\n\n<p>Pues el programa \u00e9ste tiene pinta de ser muy \u00fatil. En su <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/darold\/pgbadger\" target=\"_blank\">documentaci\u00f3n<\/a> 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\u00f1ade tambi\u00e9n una biblioteca Javascript y otra CSS y la salida son archivos HTML que no necesitan m\u00e1s. Pueden crear informes incrementales y registrar en gr\u00e1ficos muchas cosas: consultas lentas, conexiones, consumo de memoria, &#8230; <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">pg_top <\/h4>\n\n\n\n<p>Pues esta es otra herramienta que tambi\u00e9n estoy mirando para ver si alguien me se\u00f1ala 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 <em><a rel=\"noreferrer noopener\" href=\"https:\/\/www.postgresql.org\/docs\/9.6\/monitoring-ps.html\" target=\"_blank\">idle in transaction<\/a><\/em> que suelen tener una enorme duraci\u00f3n. <a href=\"https:\/\/blog.dbi-services.com\/a-look-at-postgresql-9-6-killing-idle-transactions-automatically\/\" target=\"_blank\" rel=\"noreferrer noopener\">Aqu\u00ed explican<\/a> tambi\u00e9n cu\u00e1les son los posibles problemas de que un proceso tenga abierta una transacci\u00f3n, que incluye bloqueo de tuplas y dem\u00e1s, y no est\u00e9 haciendo nada. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Resumen de la b\u00fasqueda<\/h3>\n\n\n\n<p>Esta tarde intentar\u00e9 avanzar un poco m\u00e1s. Ahora estoy cansado de tanta b\u00fasqueda entre muros de texto de documentaci\u00f3n (el manual de <em>lsof<\/em> es un buen ejemplo) y tengo que parar un poco. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Referencias<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.postgresql.org\/docs\/12\/pgstatstatements.html\" target=\"_blank\" rel=\"noreferrer noopener\">F.29. pg_stat_statements<\/a><\/li><li><a href=\"https:\/\/www.virtual-dba.com\/blog\/postgresql-performance-enabling-pg-stat-statements\/\" target=\"_blank\" rel=\"noreferrer noopener\">PostgreSQL Performance Enabling pg_stat_statements<\/a><\/li><li><a href=\"https:\/\/severalnines.com\/database-blog\/postgresql-database-monitoring-tips-what-monitor\" target=\"_blank\" rel=\"noreferrer noopener\">PostgreSQL Database Monitoring: Tips for What to Monitor<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>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.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[121],"tags":[30,34,160,226,225,94],"class_list":["post-731","post","type-post","status-publish","format-standard","hentry","category-el-dia-a-dia","tag-errores","tag-gmail","tag-intrastat","tag-pg_stat_statements","tag-pgbadger","tag-postgresql","content-box"],"_links":{"self":[{"href":"https:\/\/esferas.org\/mldt\/wp-json\/wp\/v2\/posts\/731","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/esferas.org\/mldt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esferas.org\/mldt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esferas.org\/mldt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/esferas.org\/mldt\/wp-json\/wp\/v2\/comments?post=731"}],"version-history":[{"count":6,"href":"https:\/\/esferas.org\/mldt\/wp-json\/wp\/v2\/posts\/731\/revisions"}],"predecessor-version":[{"id":739,"href":"https:\/\/esferas.org\/mldt\/wp-json\/wp\/v2\/posts\/731\/revisions\/739"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/mldt\/wp-json\/wp\/v2\/media?parent=731"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/mldt\/wp-json\/wp\/v2\/categories?post=731"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/mldt\/wp-json\/wp\/v2\/tags?post=731"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}