es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La aplicación de consola en c# de .Net Core 3.1 se está bloqueando en el contenedor de Docker.

Creé una aplicación en .Net Core 3.1 c#. Se trata de una aplicación de larga duración. Esta aplicación funciona correctamente en Windows 10 sin el contenedor de Docker, pero cuando la ejecuto en el contenedor de Docker, la aplicación se bloquea después de un tiempo y aparece el siguiente mensaje:

Excepción no controlada. System.ArgumentNullException: el valor no puede ser nulo. (Parámetro 'nativeOverlappedPtr')
   en System.Threading.Overlapped.Free(NativeOverlapped* nativeOverlappedPtr)
   en System.Runtime.IOThreadScheduler.ScheduledOverlapped.Cleanup()
   en System.Runtime.IOThreadScheduler.Cleanup()
   en System.Runtime.IOThreadScheduler.Finalize()

Incluso estoy utilizando try-catch en mi aplicación, pero aún no puedo encontrar la razón.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución de problemas de una aplicación que se bloquea en un contenedor Docker

    Como experto en tecnología de la información especializado en c#, .net, Docker y aplicaciones de consola, aquí hay algunas sugerencias para solucionar el problema mencionado anteriormente:

    Verificar los registros de Docker

    El primer paso es verificar los registros de Docker utilizando el siguiente comando:

    docker logs <container-name>
    

    Este comando mostrará los registros del contenedor, lo que puede ayudar a identificar cualquier error o excepción que ocurrió mientras se ejecutaba la aplicación en el contenedor.

    Verificar los recursos del contenedor

    El siguiente paso es verificar los recursos del contenedor, como el uso de memoria y CPU. Es posible que el contenedor se quede sin recursos, lo que provoca que la aplicación se bloquee. Para verificar los recursos del contenedor, utilice el siguiente comando:

    docker stats <container-name>
    

    Este comando mostrará el uso de los recursos del contenedor y puede ayudar a identificar si se necesitan aumentar los límites de recursos.

    Verificar el código de la aplicación

    Si ninguno de los pasos anteriores ayuda, entonces es hora de verificar el código de la aplicación. El mensaje de error sugiere que puede haber un problema con el parámetro nativeOverlappedPtr que es nulo. Trate de identificar el código que está causando este problema y depurarlo. También es posible que el problema esté fuera del código, como una dependencia que falte o un problema de configuración.

    Conclusión

    En resumen, si una aplicación c# de .Net Core 3.1 en ejecución continua se bloquea al ejecutarse en un contenedor Docker, el primer paso es verificar los registros de Docker y los recursos del contenedor. Si no son la causa, entonces es necesario verificar el código de la aplicación para identificar y solucionar el problema que causa el bloqueo.

Comments are closed.