Gateway Timeout en Gestion

Hola!
Les escribimos porque tenemos la version 3.20 instalada en la nube con 4 nucleos y 16 GB de RAM.
En varios momentos del dia las impresiones de distintos reportes dan Timeout.
Monitoreando por infraestructura vemos que el servicio de jasper de Gestion consume el 100% de un nucleo, a veces llega a consumir 3 nucleos.
Necesitamos saber si existe alguna configuracion que evite esto o cual seria el requierimiento para insfraestructura para que esto no suceda.
Gracias


SobrecargaCPU.jpg

SobrecargaCPU.png

Hola,

Revisa la respuesta de estos foros:
https://foro.comunidad.siu.edu.ar/index.php?topic=23079.msg104967
https://foro.comunidad.siu.edu.ar/index.php?topic=23515.msg106177

saludos.
2

Hola!
Estos dos hilos ya los tuvimos en cuenta y solucionaron el problema de descarga en autogestion, pero ahora tenemos otro tema que es, como mencionaba incialmente, el uso de CPU.
Gracias

Hola,

Me alegro que pudieron solucionar el problema de impresión con Jasper.

En cuanto al problema de CPU:

  1. ¿tienen bien configurado según indica esta documentación?

  2. ¿sera lentitud del Postgres? ¿que ocurre si ejecutas la query VACUUM ANALYZE en la base de datos?
    Ver estos foros:
    https://foro.comunidad.siu.edu.ar/index.php?topic=16168.msg70731
    https://foro.comunidad.siu.edu.ar/index.php?topic=19464.msg85854

  3. ¿da algún error Apache o Postgres?

saludos.
2

Muchas gracias, pasamos esta informacion a operaciones y les contamos cómo nos fue
Por otro lado, el tema de usar metadatos compilados, puede ayudar a agilizar las consultas y evitar el timeout?
Puede tener que ver con este error el parametro de timeout de apache? /etc/php/7.4/apache2/php.ini y /etc/php/7.4/cli/php.ini

Saludos

Hola,

Por otro lado, el tema de usar metadatos compilados, puede ayudar a agilizar las consultas y evitar el timeout?

Usa los metadatos compilados hace mas eficiente la aplicación en producción, pero las queries siguen siendo las mismas. Por eso esta bueno ver los logs para saber que query esta lenta, el VACUUM ANALYZE suele ayudar con el tema de la lentitud del Postgres.

Puede tener que ver con este error el parametro de timeout de apache? /etc/php/7.4/apache2/php.ini y /etc/php/7.4/cli/php.ini

Tenes las directiva max_execution_time, pero eso no resuelve el problema de fondo, simplemente hace que PHP espere mas tiempo antes de terminar la ejecución. También esta la directiva TimeOut de Apache.

saludos.
3

Hola!
El Vacuum Analyze lo tenemos pendiente de ejecucion.
Apache da este error que adjunto.
Slds


error php.txt (3.68 KB)

Hola Maria,


[Mon Feb 14 13:39:13.801565 2022] [php7:notice] [pid 24842] [client 10.72.3.155:8514] SQLSTATE[42P01]: Undefined table: 7 ERROR:  relation "app_versiones_base" does not exist\nLINE 2:     FROM  app_versiones_base\n                  ^
[Mon Feb 14 13:39:13.806326 2022] [php7:notice] [pid 24842] [client 10.72.3.155:8514] toba_error_db: <p><b>SQLSTATE:</b> db_42P01</p><p><b>CODIGO:</b> 7</p><p><b>MENSAJE:</b> ERROR:  relation "app_versiones_base" does not exist\nLINE 2:     FROM  app_versiones_base\n                  ^</p><p><b>SQL:</b> SELECT\t\ttrim(version_app) as version_actual \n\t\t\t\tFROM\t\tapp_versiones_base\n\t\t\t\tORDER BY\tid_conversion DESC\n\t\t\t\tLIMIT\t\t1\n\t\t</p>\n[TRAZA]\n\t\n\ttoba_db->consultar_fila \nArchivo: /var/www/html/guarani/vendor/siu-toba/framework/php/lib/db/toba_db.php, lInea 508 \n\t\n\tguarani_db_nucleo::consultar_fila \nArchivo: /var/www/html/guarani/php/nucleo/administracion/parametros/co_parametros.php, lInea 433 \n\t\n\tco_parametros->get_version_app_base \nArchivo: /var/www/html/guarani/php/extension_toba/contexto_ejecucion_guarani.php, lInea 17 \n\t\n\tcontexto_ejecucion_guarani->conf__inicial \nArchivo: /var/www/html/guarani/vendor/siu-toba/framework/php/nucleo/toba_nucleo.php, lInea 331 \n\t\n\ttoba_nucleo->iniciar_contexto_ejecucion \nArchivo: /var/www/html/guarani/vendor/siu-toba/framework/php/nucleo/toba_nucleo.php, lIn...SIGUE...

¿tenes la tabla app_versiones_base?

¿tenes bien configurados los valores de schema en instalacion/bases.ini?

saludos.
2

Hola:
Les paso la respuesta de Infraestructura:

  1. Versión PostgreSQL 11.12 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11), 64-bit

  2. Errores, no sé si tienen algún tiempo específico les paso las ultimas 20hs de logs en el ZIP que se encuentra atachado.

  3. Al ser una instancia RDS el mantenimiento ya estaba scheduleado (Vacuum y Analize), se está corriendo todas las semanas, este plan de mantenimiento está incluido en una tarea programada por AWS. No obstante nosotros lo disparamos de forma manual en 2 oportunidades y el tiempo fue inmediato porque la actividad programada había corrido antes. Así que descartaría reorg y actualización de estadísticas.

Luego de esta confirmación, volvimos a intentar imprimir actas de examen y tuvimos el mismo time out.
Gracias


Logs-SIU-PREPROD-Feb-15.zip (6.96 KB)

Hola Maria,

Gracias por los logs, en los veo algunos errores que dan algunas queries, pero eso no debe ser lo que genera el timeout ya que la query se llega a ejecutar y da error.

Estaría bueno poder loguear las queries que se ejecutan al intentar imprimir actas de examen, y luego ejecutar un EXPLAIN de dichas queries para ver porque tardan tanto.

Para loguear las queries de Postgres podes seguir estos posts:
https://chartio.com/resources/tutorials/how-to-log-queries-in-postgresql/
https://tableplus.com/blog/2018/10/how-to-show-queries-log-in-postgresql.html

Referencia:
https://foro.comunidad.siu.edu.ar/index.php?topic=8823.msg38145

saludos.
4

Hola Leonel!

Desde el área de Infraestructura nos consultan sobre cuál sería la recomendación que nos podrían dar Uds. en cuanto a requerimientos de Hardware.
Te paso algunos datos para ver si pueden guiarnos ya que, como te comentó Fernanda, en estos momentos tenemos 4 núcleos y 16Gb de memoria RAM.
Quizás mejoraría si subimos la cantidad de núcleos y/o RAM.
Cantidad de personas: 36792
Cantidad de alumnos: 40018
Cant. registros de actas: 142050
Cant. registros detalle actas: 1435777
Cant. registros inscripciones a cursadas: 32813
Cant. de usuarios en módulo gestión habilitados: 200 (estimamos que el 30% de manera simultánea se están logueando).

Por último, como dato adicional te comento que hemos revisado el link de requerimientos: https://documentacion.siu.edu.ar/wiki/Requerimientos_IT y no estamos seguros cuál es el tamaño que deberíamos asumir (chico, mediano o grande), siguiendo las especificaciones del documento.

Muchísimas gracias por la ayuda que nos puedan brindar.
Saludos

Hola Cynthia,

Desde el área de Infraestructura nos consultan sobre cuál sería la recomendación que nos podrían dar Uds. en cuanto a requerimientos de Hardware.
En este tema doy la palabra a alguna otra universidad que maneje volúmenes parecidos a los de ustedes. Depende mucho si tienen inscripciones con cupo también.

¿los problemas de performance te los da siempre o en alguna operación en particular?

También pueden hacer uso de la herramienta pgBadger para encontrar si hay una query muy lenta que esta ocasionando el problema.

saludos.
4

Hola Leonel:
Detectamos este mismo error en una consulta en particular. En la operacion administrar optativas de una actividad generica, en una generica que tiene mas de 300 actividades vinculadas, da el error de time out.
Tenemos la version 3.20 y el parametro pro_ver_optativas_en_estrucutura_plan, en que no se visualizan. Esto nos ayudo a que reportes como plan de estudios de un alumno, funcionara y no diera error de time out.
Puede ser que esta otra operacion no tenga optimizada su consulta?
Gracias!

Hola Maria,

¿entonces el timeout te lo da en la operación Administrar Optativas de una Actividad Genérica cuando cargar las Actividades Optativas Asociadas a la Genérica?

Vamos a ver porque en esa operación no se tuvo en cuenta el parámetro pro_ver_optativas_en_estructura_plan.

saludos.
2

Hola Leonel:
En esta operacion da timeout siempre, pero no es en el único caso.
En las impresiones, de manera aleatoria hemos ido teniendo este mismo inconveniente. Por ej, en impresiones sucesivas de actas de examen, impresión de listado de propuestas.

Saludos

Hola Maria,

Claro, en la operación Administrar Optativas de una Actividad Genérica no usa el parámetro pro_ver_optativas_en_estructura_plan, ya que es esta operación es donde se administra por lo tanto se deben listar todas las optativas. En las operaciones de Administrar Planes de Estudio y Reporte de Plan de Estudios de un Alumno si se hace el uso del parámetro, ¿estas dos operaciones las notas lentas también?

Proba ejecutar la siguiente query:


SELECT generica.elemento as materia_generica,

					    rev_padre.elemento_revision     	as revision_materia_generica,
					    generica.codigo            			as codigo_materia_generica, 
					    generica.entidad            		as entidad_materia_generica, 
					    generica.nombre            			as nombre_materia_generica,
					    get_regla_mensaje(rev_padre.regla, rev_padre.parametros) as forma_cumplimiento,
					    creditos_padre.nombre 				as origen_credito,
					    sga_elementos_comp.puntaje     		as puntaje_materia_optativa,
					    sga_elementos_comp.orden,
					    sga_elementos_estados.descripcion 	as desc_estado_materia_optativa, 
					    optativa.codigo            			as codigo_materia_optativa,
					    optativa.entidad            		as entidad_materia_optativa,
					    rev_hijo.elemento_revision         	as revision_materia_optativa,
					    sga_g3entidades_subtipos.nombre		as optativa_tipo,
					    optativa.nombre            			as nombre_materia_optativa,
					    'S'				as optativa_confirmada 
				FROM	sga_elementos 						as generica, 
            			sga_elementos_revision 				as rev_padre
                 		LEFT JOIN sga_reglas as regla_padre ON rev_padre.regla = regla_padre.regla, 
            			sga_elementos_origen_creditos as creditos_padre, 
            			sga_elementos_comp, 
            			sga_elementos_estados, 
            			sga_elementos as optativa,
            			sga_g3entidades_subtipos,
            			sga_elementos_revision as rev_hijo
            			
   				WHERE  	rev_padre.elemento = generica.elemento 
        				AND generica.entidad_subtipo = 2
           				AND rev_padre.origen_creditos = creditos_padre.origen_creditos 
           				AND sga_elementos_comp.elemento_padre = rev_padre.elemento_revision
           				AND sga_elementos_comp.elemento_hijo = rev_hijo.elemento_revision 
           				AND optativa.elemento = rev_hijo.elemento
           				AND optativa.entidad_subtipo = sga_g3entidades_subtipos.entidad_subtipo
           				AND optativa.estado = sga_elementos_estados.estado 
           				 AND generica.elemento = <GENERICA>
    
           		ORDER BY  	generica.nombre,
       						sga_elementos_comp.orden
 						;

Reemplaza por el id de la materia genérica.

¿cuanto tarda dicha query?

También ejecuta el EXPLAIN ANALYZE de la misma query y pasanos los resultados:


EXPLAIN ANALYZE SELECT generica.elemento as materia_generica,

					    rev_padre.elemento_revision     	as revision_materia_generica,
					    generica.codigo            			as codigo_materia_generica, 
					    generica.entidad            		as entidad_materia_generica, 
					    generica.nombre            			as nombre_materia_generica,
					    get_regla_mensaje(rev_padre.regla, rev_padre.parametros) as forma_cumplimiento,
					    creditos_padre.nombre 				as origen_credito,
					    sga_elementos_comp.puntaje     		as puntaje_materia_optativa,
					    sga_elementos_comp.orden,
					    sga_elementos_estados.descripcion 	as desc_estado_materia_optativa, 
					    optativa.codigo            			as codigo_materia_optativa,
					    optativa.entidad            		as entidad_materia_optativa,
					    rev_hijo.elemento_revision         	as revision_materia_optativa,
					    sga_g3entidades_subtipos.nombre		as optativa_tipo,
					    optativa.nombre            			as nombre_materia_optativa,
					    'S'				as optativa_confirmada 
				FROM	sga_elementos 						as generica, 
            			sga_elementos_revision 				as rev_padre
                 		LEFT JOIN sga_reglas as regla_padre ON rev_padre.regla = regla_padre.regla, 
            			sga_elementos_origen_creditos as creditos_padre, 
            			sga_elementos_comp, 
            			sga_elementos_estados, 
            			sga_elementos as optativa,
            			sga_g3entidades_subtipos,
            			sga_elementos_revision as rev_hijo
            			
   				WHERE  	rev_padre.elemento = generica.elemento 
        				AND generica.entidad_subtipo = 2
           				AND rev_padre.origen_creditos = creditos_padre.origen_creditos 
           				AND sga_elementos_comp.elemento_padre = rev_padre.elemento_revision
           				AND sga_elementos_comp.elemento_hijo = rev_hijo.elemento_revision 
           				AND optativa.elemento = rev_hijo.elemento
           				AND optativa.entidad_subtipo = sga_g3entidades_subtipos.entidad_subtipo
           				AND optativa.estado = sga_elementos_estados.estado 
           				 AND generica.elemento = <GENERICA>
    
           		ORDER BY  	generica.nombre,
       						sga_elementos_comp.orden
 						;

saludos.
2

Hola!
La consulta tarda entre 500 y 600 ms.
Te adjunto el resultado con explain analyze.
Necesitas que generemos algun GDS por esto? consulta adicional por el GDS, como gestionamos un usuario nuevo para GDS?
Gracias!


_EXPLAIN_ANALYZE_SELECT_generica_elemento_as_materia_generica_re_202202211554.pdf (227 KB)

Hola Maria,

La query en si no tarda tanto por ser 364 registros, el EXPLAIN ANALYZE del SELECT dice 8ms:


Planning Time: 1.257 ms
Execution Time: 8.110 ms

Necesitas que generemos algun GDS por esto? consulta adicional por el GDS, como gestionamos un usuario nuevo para GDS?
Si, mejor lo seguimos por GDS. Lo del usuario te lo averiguo.

saludos.
2

Hola María, el responsable de proyecto debe cargar una solicitud solicitando el acceso para la persona. Tengan en cuenta que debe estar registrada en comunidad (https://siu.edu.ar/alta)

Saludos!

Se sigue en GDS 56429.