¿Por qué no puede SQL Server 2019 container (implementado en Azure Container Instances) aceptar conexiones inmediatamente después de haberse iniciado?
Usando Docker Compose (y la integración de ACI), inicio servicios que se ejecutan en Azure Container Instances. Uno de los servicios es un contenedor Docker de SQL Server 2019. Lleva un momento poner en marcha los contenedores y hacerlos funcionar. Sin embargo, aunque el contenedor de SQL Server esté en estado de ejecución y el registro muestre que se ha iniciado correctamente, tarda bastante tiempo (unos minutos) en poder aceptar conexiones.
¿Alguien sabe por qué tarda tanto?
Así que, al intentar conectarme al servidor usando sqlcmd, sigo recibiendo la siguiente respuesta durante unos minutos después de que el servidor se haya iniciado:
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server: Expiró el tiempo de espera de inicio de sesión.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server: Proveedor TCP: código de error 0x102.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server: Se ha producido un error relacionado con la red o específico de la instancia al establecer una conexión con SQL Server. No se encuentra el servidor o no es accesible. Compruebe si el nombre de la instancia es correcto y si SQL Server está configurado para permitir conexiones remotas. Para obtener más información, consulte SQL Server Books Online.
ACTUALIZACIÓN [22/12/2021]:
Me pregunto también por qué el comando “top” ejecutado desde dentro del contenedor de la base de datos muestra lo siguiente.
El proceso de mssql utiliza casi el 100% de la CPU. Sin embargo, el estado general de la CPU (por favor, vea la fila “%Cpu(s):”) muestra que la CPU está un 66% inactiva.
¿Alguien sabe por qué?
davy.ai
Posibles explicaciones de por qué el contenedor de SQL Server tarda unos minutos en aceptar conexiones podrían incluir:
En relación con el alto uso de CPU del proceso mssql que se muestra en la salida del comando top, es posible que el proceso esté realizando algún procesamiento de datos pesado o consultas que requieren mucha potencia de CPU. Sin embargo, la utilización general de la CPU puede parecer más baja debido a otros procesos o tareas del sistema que también están utilizando los recursos de la CPU. También es posible que la carga del sistema no se distribuya de manera uniforme en todos los núcleos de la CPU, lo que podría explicar por qué uno de los núcleos parece estar completamente utilizado mientras que los demás están inactivos. Un análisis más detallado de los registros, métricas y asignación de recursos del contenedor podría proporcionar información adicional sobre la causa raíz de estos problemas.