En la bitácora del Event Viewer que enviaste, aparecen los siguientes errores:
- Exception of type 'System.OutOfMemoryException' was thrown
- The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached
- Message Queue service is not available
Entonces me parece que la revisión tiene que ser orientada a evaluar el consumo de memoria de los procesos. Dado que las excepciones se controlan correctamente por GenPlaWinService, pareciera que él no es el responsable, si no que es SQL Server el que llega a un estado en que no le contesta a servicio.
-
¿El SQL Server se está ejecutando en el mismo servidor donde está Evolution?
-
¿Qué versión de SQL Server se está usando?, porque hay mensajes de SQL Express en el log del Event Viewer, si no se está usando, entonces ¿por qué está instalado en el servidor de Evolution? Si es solamente para las bases de AppFabric, estas bases se pueden configurar para que estén en otro servidor.
-
Como puede verse en el Stack Trace de los dos primeros errores fallan en la línea 102 del servicio GeneraPlanillaWcfService. Está linea de código es una instrucción SELECT a la base de datos, que obtiene el período a calcular y la formulación del tipo de planilla asociado. Esta instrucción es el primer acceso a la base de datos que hace el generador de planilla.
-
¿Cuál es el nivel de monitoreo del AppFabric? Si no se están evaluando posibles problemas con el Workflow, entonces el monitoreo de AppFabric debe reducirse para liberar el CPU y la memoria que consume. (Ver respuesta a la pregunta en QA #532)
Adjunto las excepciones completas para ver la situación de error al que llega el Generador de Planilla
Al enviar la orden de inicio al WCF de calculo de planilla
Exception of type 'System.OutOfMemoryException' was thrown.
at System.Data.Objects.DataClasses.RelationshipManager.CreateRelatedEnd[TSourceEntity,TTargetEntity](RelationshipNavigation navigation, RelationshipMultiplicity sourceRoleMultiplicity, RelationshipMultiplicity targetRoleMultiplicity, RelatedEnd existingRelatedEnd)
at System.Data.Objects.DataClasses.RelationshipManager.GetRelatedReference[TSourceEntity,TTargetEntity](String relationshipName, String sourceRoleName, String targetRoleName, NavigationPropertyAccessor sourceAccessor, NavigationPropertyAccessor targetAccessor, RelationshipMultiplicity sourceRoleMultiplicity, RelatedEnd existingRelatedEnd)
at System.Data.Objects.LightweightCodeGenerator.<>c__DisplayClass4`2.<CreateGetRelatedEndMethod>b__0(RelationshipManager manager, RelatedEnd relatedEnd)
at System.Data.Objects.LightweightCodeGenerator.GetRelatedEnd(RelationshipManager sourceRelationshipManager, AssociationEndMember sourceMember, AssociationEndMember targetMember, RelatedEnd existingRelatedEnd)
at System.Data.Objects.DataClasses.RelationshipManager.GetRelatedEndInternal(String relationshipName, String targetRoleName, RelatedEnd existingRelatedEnd, AssociationType relationship, Boolean throwOnError)
at System.Data.Objects.DataClasses.RelationshipManager.GetRelatedEndInternal(String relationshipName, String targetRoleName)
at System.Data.Objects.EntityEntry.FixupReferencesByForeignKeys(Boolean replaceAddedRefs)
at System.Data.Objects.ObjectStateManager.FixupReferencesByForeignKeys(EntityEntry newEntry, Boolean replaceAddedRefs)
at System.Data.Objects.ObjectStateManager.AddEntry(IEntityWrapper wrappedObject, EntityKey passedKey, EntitySet entitySet, String argumentName, Boolean isAdded)
at System.Data.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly[TEntity](Func`2 constructEntityDelegate, EntityKey entityKey, EntitySet entitySet)
at lambda_method(Closure , Shaper )
at System.Data.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shaper shaper)
at System.Data.Common.Internal.Materialization.Shaper`1.RowNestedResultEnumerator.MoveNext()
at System.Data.Common.Internal.Materialization.Shaper`1.ObjectQueryNestedEnumerator.TryReadToNextElement()
at System.Data.Common.Internal.Materialization.Shaper`1.ObjectQueryNestedEnumerator.ReadElement()
at System.Data.Common.Internal.Materialization.Shaper`1.ObjectQueryNestedEnumerator.MoveNext()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
at Aseinfo.VH4.WindowsServices.Salarios.GeneraPeriodoPlanillaWcfService.Iniciar(IniciarPlanillaData data, IGenericEntityRepository repository) in c:\VH4\VH4\WindowsServices\GeneraPlanillaWindowsService\Salarios\GeneraPeriodoPlanillaWcfService.cs:line 102
at Aseinfo.VH4.WindowsServices.Salarios.GenPlaHostWcf.Execute() in c:\VH4\VH4\WindowsServices\GeneraPlanillaWindowsService\Salarios\GenPlaHostWCF.cs:line 113
También este aparece muchas veces:
Al enviar la orden de inicio al WCF de calculo de planilla
The underlying provider failed on Open.
Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)
at System.Data.EntityClient.EntityConnection.Open()
at System.Data.Objects.ObjectContext.EnsureConnection()
at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
at Aseinfo.VH4.WindowsServices.Salarios.GeneraPeriodoPlanillaWcfService.Iniciar(IniciarPlanillaData data, IGenericEntityRepository repository) in c:\VH4\VH4\WindowsServices\GeneraPlanillaWindowsService\Salarios\GeneraPeriodoPlanillaWcfService.cs:line 102
at Aseinfo.VH4.WindowsServices.Salarios.GenPlaHostWcf.Execute() in c:\VH4\VH4\WindowsServices\GeneraPlanillaWindowsService\Salarios\GenPlaHostWCF.cs:line 113
Y finalmente aparece este:
Al procesar la cola de períodos a generar
Message Queue service is not available.
at System.Messaging.MessageQueue.Create(String path, Boolean transactional)
at Aseinfo.VH4.WindowsServices.Salarios.GestorCola..ctor(String genPlanillaQueuePath, Int32 queueReceiveSecondsTimeOut)
at Aseinfo.VH4.WindowsServices.Salarios.GenPlaHostWcf.Execute()
answered
28 Aug '14, 00:56
Fernando Paz ♦♦
17.3k●8●16●35
accept rate:
51%