Gran lentitud al imprimir reportes en Gestion

Hola, buenos dias. Luego de actualizar desde la version 3.18.1 a la 3.20.0 empezamos a experimentar grandes tiempos de espera a la hora de realizar impresiones de reportes en general desde Guarani Gestion. Lo máximo que tarda es aprox 2 minutos hasta que se genera el reporte. Aunque a veces tarda menos.

Como una solucion temporal, reiniciando el servidor de gestion, se soluciona el problema durante aprox un dia. Al dia siguiente vuelve a suceder.

Según ese comportamiento, revisamos los procesos del servidor, y el espacio en disco, los logs de apache, y la actividad en la base de datos de guarani. Todo parece estar bien.

Que puede estar sucediendo?

Hola Erwin,

Si SIU-Guaraní Gestión y Autogestión comparten el mismo servidor de Jasper entonces proba con la solución de este foro: https://foro.comunidad.siu.edu.ar/index.php?topic=23079.msg104967

saludos.
2

Hola!
En nuestro caso tenemos un servidor para gestion, otro para autogestion, y otro para la base de datos.
La anomalia de tanto tiempo de espera sucede en Gestion pasado masomenos un dia luego de reiniciarlo.
El sistema y la interfaz reacciona con fluidez, es solo cuando imprimimos algo que tarda bastante en generar el reporte.
Tal vez haya algo que cambio en java o especificamente en jasper con la ultima actualizacion hacia la 3.20.0?

Hola Erwin,

Hay un problema que se esta dando en SIU-Guaraní 3.20.0 por la librería “siu-toba/jasper”: “5.6.2”,, probemos haciendo un downgrade a la versión 5.6.1:

  1. En composer.json cambia a “siu-toba/jasper”: “5.6.1”,
  2. Ejecuta composer update siu-toba/jasper
  3. En php.ini configura la directiva java.pipe_dir:
java.pipe_dir = <PATH-TO-GUARANI>/temp

.
4) Reiniciar Apache.

Notas: Cada vez que imprimas con Jasper vas a ver algunos warnings/notices debido a que en PHP 7.4 los reporta.

saludos.
2

Gracias por esta posible solución.
Con respecto a esta directiva: java.pipe_dir = /temp
La agregamos a los archivos…
/vendor/siu-toba/jasper/JavaBridge/WEB-INF/cgi/php.ini
/etc/php/7.4/apache2/php.ini
/etc/php/7.4/cli/php.ini

Al intentar imprimir reportes luego de hacer esos cambios, nos lleva a la pagina en blanco y ya no genera el reporte resultante. Sino que mas bien genera el siguiente error en el /var/log/apache2/error.log

[Wed Mar 23 11:09:36.636710 2022] [php7:notice] [pid 12381] [client 170.210.69.25:46672] java_InternalException: \n[TRAZA]\n\t\n\tjava_ThrowExceptionProxyFactory->getProxy \nArchivo: /var/vhosts/guarani/3.8.0/vendor/siu-toba/jasper/JavaBridge/java/Java.inc, lInea 223 \n\t\n\tjava_Arg->getResult \nArchivo: /var/vhosts/guarani/3.8.0/vendor/siu-toba/jasper/JavaBridge/java/Java.inc, lInea 388 \n\t\n\tjava_Client->getWrappedResult \nArchivo: /var/vhosts/guarani/3.8.0/vendor/siu-toba/jasper/JavaBridge/java/Java.inc, lInea 394 \n\t\n\tjava_Client->getResult \nArchivo: /var/vhosts/guarani/3.8.0/vendor/siu-toba/jasper/JavaBridge/java/Java.inc, lInea 588 \n\t\n\tjava_Client->invokeMethod \nArchivo: /var/vhosts/guarani/3.8.0/vendor/siu-toba/jasper/JavaBridge/java/Java.inc, lInea 1795 \n\t\n\tjava_JavaProxy->__call \nArchivo: /var/vhosts/guarani/3.8.0/vendor/siu-toba/jasper/JavaBridge/java/Java.inc, lInea 1894 \n\t\n\tjava_AbstractJava->__call \nArchivo: /var/vhosts/guarani/3.8.0/vendor/siu-toba/jasper/JavaBridge/java/Java.inc, lInea 2042 \n\t\n\tJava->__call \nArchivo: /var/vhosts/guarani/3.8.0/vendor/siu-toba/framework/php/nucleo/lib/s…SIGUE…, referer: https://sistemas.unvime.edu.ar/gestion/aplicacion.php?ah=st623b29d21aca05.74599835&ai=guarani||34000021&tz=1

Probamos hacer el comando guarani compilar ya que estamos en modo producción y el problema persiste con ese error nuevo.

Ahi pudimos solucionarlo unicamente reiniciando el servidor completo, de otro modo siempre daba ese error. Ahora funciona con la version de jasper 5.6.1.

Al final esta bien poner la instruccion en esos php.ini ? O es solo en uno de esos tres?

Hola Erwin,

Yo hice los siguientes pasos (ademas de los que ya te mencione) y me funciono:

  1. Reinicia Jasper.
  2. Dar permisos a la carpeta que configuraste para la directiva java.pipe_dir (yo le di chmod 7777 -R /temp).
  3. Poner la directiva display_errors = Off en el php.ini, ya que sino mete warnings/notices en el PDF y queda corrupto.
  4. Reiniciar Apache.

saludos.
2

Hola Erwin,

Me alegro que lo pudieron solucionar!!!

Al final esta bien poner la instrucción en esos php.ini ? O es solo en uno de esos tres?
Creo que solo basta con ponerlo en [b]/etc/php/7.4/apache2/php.ini[/b] el cual es para el PHP Web.

Avísanos si con la versión “siu-toba/jasper”: “5.6.1” se van los problemas de lentitud.

saludos.
2

Buenos dias. Dejamos pasar unos dias para verificar si volvia a suceder la lentitud o no. Y al parecer sigue estando lento. Tarda actualmente unos 20 segundos en responder las impresiones.

Se podria decir que con la version 5.6.1 de jasper, el problema continua.

Salvo que sea por otro motivo la lentitud.

Hola Erwin,

¿estas usando jdk 1.8?

¿se te llena la carpeta que configuraste para java.pipe_dir?

¿muestra algún error los logs de Apache?

Referencias:
https://gitlab.siu.edu.ar/siu/soporte/-/issues/189
https://community.jaspersoft.com/questions/536842/jasperreports-too-slow
https://foro.comunidad.siu.edu.ar/index.php?topic=21870.0
https://gitlab.siu.edu.ar/siu/soporte/-/issues/205

saludos.
2

¿estas usando jdk 1.8?

java --version

openjdk 11.0.9 2020-10-20
OpenJDK Runtime Environment (build 11.0.9+11-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.9+11-post-Debian-1deb10u1, mixed mode, sharing)

¿se te llena la carpeta que configuraste para java.pipe_dir?

En el sistema de archivos del servidor tenemos 74% del espacio usado. Es decir, aun queda bastante espacio si a eso se refieren con llenar tal carpeta.
No recuerdo haber configurado una carpeta especifica usando ese parametro. Posiblemente haya una carpeta por defecto al instalar hace mucho el openjdk. Lo voy a investigar y asegurarme de que la carpeta funcione y tenga movimineto de archivos.

¿muestra algún error los logs de Apache?

No hay errores relacionados a este tema en el archivo error.log de apache2.


Voy a ir revisando a fondo las referencias que mencionas tambien.

Hola Erwin,

Probemos con lo siguiente:

  1. En composer.json cambia a “siu-toba/jasper”: “5.6.1”,
  2. Ejecuta composer update siu-toba/jasper
  3. En php.ini NO configures la directiva java.pipe_dir.
  4. Dar permisos a la carpeta /dev/shm (yo le di chmod 7777 -R /dev/shm).
  5. Poner la directiva display_errors = Off en el php.ini, ya que sino mete warnings/notices en el PDF y queda corrupto.
  6. Reiniciar Apache.
  7. Reinicia Jasper.

saludos.
2

Gracias por compartir el procedimiento propuesto paso a paso. Lo hice y tambien me llevo a encontrar muchos archivos pdf en la carpeta temp del guarani. En el php.ini no teniamos configurada la directiva java.pipe_dir. Pero aun asi habia muchisimos archivos en esa carpeta. Tal vez de alguna version anterior.

Asi que tambien elimine todos los archivos con extension .pdf de esa carpeta.

La diferencia es enorme. Las impresiones y generacion de reportes se procesan en una fraccion de segundo.

Ya van pasando varios dias y sigue andando asi de fluido.

Queda solucionado este inconveniente.

Muchas gracias!

Hola Erwin, me alegro que les haya servido la solución!!!

Estamos viendo de solucionarlo para la próxima versión de Guaraní.

saludos.

Buenos dias. Desde que migramos a la versión 3.20 empezamos con el mismo problema la lentitud de los reportes. Hice los pasos indicados en comentarios anteriores pero sigue lento. Me podrían orientar como resolverlo.

Hola Hernan,

Seguí desde la Respuesta #8 en adelante de este otro foro, tienen la misma versión y problema parece.

saludos.
2

Se continua via gds 61249

También se puede utilizar la version v5.6.1.2 de siu-toba/jasper, se deben seguir los siguientes pasos:

  1. Versión 3.20.2 y menores: En src/SIU/Guarani/Scripts/Composer.php comentar/borrar las lineas donde se llama a static::ajustarJasperPhp74();
  2. En composer.json cambia a “siu-toba/jasper”: “v5.6.1.2”,
  3. Ejecuta composer update siu-toba/jasper
  4. Configurar la directiva java.pipe_dir en php.ini.
  5. Si configurando la directiva java.pipe_dir no funciona, entonces dar permisos a la carpeta /dev/shm (yo le di chmod 7777 -R /dev/shm).
  6. Poner la directiva display_errors = Off en el php.ini, ya que sino mete warnings/notices en el PDF y queda corrupto.
  7. Reiniciar Apache.
  8. Reinicia Jasper.
    saludos.
    2

Hola, una consulta: como se hace esto ultimo en Guarani Autogestion?

  • Encontre en vendor/siu/chulupi-framework/composer.json la linea adecuada para setear la version especifica de jasper.
  • Encontre en src/siu/Install.php la linea static::ajustarJasperPhp74($vendorDir) .

Pero luego voy a la raiz del proyecto y ejecuto composer update siu-toba/jasper y me indica Nothing to install or update.

Hola @erwin.stangholzer

¿que versión de Guaraní tenes instalada? De la 3.20.3 en adelante ya usa "siu-toba/jasper": "v5.6.1.2", por eso quizás dice Nothing to install or update . (lo podes revisar en composer.json).

Mejor seguí estos pasos.

Saludos.