0
1

Se me reporto el siguiente problema:

"La planilla da error de TimeOut y traba todo Evolution. Es necesario cerrar el navegador y volver a entrar para seguir trabajando. Al consultar el estado de generación de planilla dice 'Finalizada'".

Al revisar los log del GenPla, verifique que en efecto el proceso finaliza sin problemas pero Evolution queda colgado hasta que cierra el navegador y vuelven a entrar.

No hay registro de error en ningún lado salvo el que se presenta en Evolution (TimeOut)

asked 01 Apr '16, 15:27

Leopoldo%20Madrid's gravatar image

Leopoldo Madrid
101202424
accept rate: 50%


Al revisar todos los procedimientos GenPla, note que el genpla_inicializacion tardaba demasiado por dos procedimientos específicos: genpla_horas_extra_reevalua y genpla_genera_recargos.

Ambos realizan una consulta bien pesada a varias tablas para determinar los horarios diarios para cada uno de los empleados en cada día de la quincena o catorcena, según sea el caso ya que la mayoría tienen jornadas no administrativas. De tal forma que los cálculos salariales se realizan según la jornada diaria así como los recargos y horas extra.

Realice una creación de índices a ciertas tablas lo cual mejoró el rendimiento de los proceso y logre bajar la ejecución del genpla_inicializacion a 3 segundos y la planilla se generó exitosamente. Sin embargo, al día siguiente, generaron planilla y volvió a dar el mismo problema. Corrí el genpla_inicializacion desde la base de datos y tardó 4.5 minutos. Recompilé el procedimiento de recargos y ejecute nuevamente desde SQLServer y bajo otra vez a 3 segundos. Luego desde Evolution, corrio maravillosamente. Por la tarde generaron planilla y volvió a tronar.

Comente con algunos compañeros y Julio Flores me dijo que se le presentó algo similar debido al "Parameter Sniffing" que en pocas palabras, es una especie de técnica de optimización que tiene SQLServer para prevenir que los procesos truenen. Este proceso evalúa la cantidad de datos que se procesan en un procedimiento la primera vez luego de ser compilado y asume que esa es la media de datos procesados siempre. Cuando los datos procesados son pocos, funciona pero en mi caso, se procesaban mas de 10,000 registros lo cual lo volvía lentísimo.

La solución es no usar los parámetros como variables dentro del script del procedimiento, sino mas bien almacenarlas dentro de otras variables y procesar el resto del script con estas variables de "segundo nivel". Algo asi:

Ademas de realizar un buen analisis de indexación de datos considero que también esta es una buena práctica sobre aquellos procesos que manejan gran cantidad de datos. El rendimiento de la planilla se mejoró en un 84%

ALTER proc [sv].[genpla_genera_ingresos_retroactivos] @sessionId varchar(36) = null, @codppl int, @userName varchar(100) = null as --Variables de segundo nivel declare @sessionId1 varchar(36), @codppl1 int , @userName1 varchar(100)

    -- set de las variables segun los parametros
select @sessionId1 = @sessionId,
    @codppl1 = @codppl,
    @userName1 = @userName
link

answered 01 Apr '16, 15:42

Leopoldo%20Madrid's gravatar image

Leopoldo Madrid
101202424
accept rate: 50%

(01 Apr '16, 15:43) Leopoldo Madrid Leopoldo%20Madrid's gravatar image

Interesante. Muchas gracias por compartir

(07 Apr '16, 17:08) Juan Carlos Soria Juan%20Carlos%20Soria's gravatar image

Adicional a la respuesta a esta pregunta, también se sugiere actualizar al menos al hotfix 1.9.2.2, ya que se implementó un cambio en el código fuente que mejora la eficiencia en el llamado a los procedimientos de inicialización del cálculo de planillas.

link

answered 06 Apr '16, 10:43

Fernando%20Paz's gravatar image

Fernando Paz ♦♦
17.3k81635
accept rate: 51%

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Evolution en BitBucket

En este sitio puede acceder al código fuente, centro de descargas y reportar bugs, propuestas y mejoras para Evolution.

Evolution en JIRA

En este sitio puedes sugerir nueva funcionalidad para Evolution, o puedes votar por la funcionalidad ya propuesta por otros usuarios.

Tags:

×47

Asked: 01 Apr '16, 15:27

Seen: 1,110 times

Last updated: 07 Apr '16, 17:08

[Acerca de] [Preguntas Frecuentes] [Privacidad] [Soporte] [Contacto]
Copyright 2013-2018. Asesores en Informática