Seguimiento de la secuencia de cierre de la conexión de red en el Motor de base de datos

En este artículo se presentan ejemplos de un seguimiento de red que captura la secuencia durante el momento en que se cierra una conexión del Protocolo de control de transmisión (TCP) entre una aplicación cliente y sql Server Motor de base de datos (el servidor). Comprender estos patrones es fundamental para diagnosticar el comportamiento de red, identificar estrategias de agrupación y optimizar la administración de conexiones en aplicaciones web o de servicio.

Cierre de tipos de conexión

En este artículo se proporcionan ejemplos de conexiones TCP normales y varias conexiones de conjuntos de resultados activos (MARS). MARS es una característica de SQL Server, introducida con SQL Server 2005 (9.x), que permite ejecutar varios comandos en una conexión sin tener que limpiar los resultados del primer comando, antes de ejecutar el segundo comando. MARS se logra mediante multiplexación de sesión (SMUX).

En esta sección se describen varios ejemplos de cierre de una conexión de red.

  • La dirección IP del cliente es 10.10.10.104
  • La dirección IP del servidor es 10.10.10.22

Cierre de paquetes

En este ejemplo se muestra una secuencia de cierre de conexión normal. Tenga en cuenta los números de fotogramas bajos y los desplazamientos de tiempo. Es más probable que esta secuencia sea un cierre de conexión agrupado. Esto debería producirse en un plazo de 30 segundos al principio del seguimiento, o también podría ver paquetes de mantenimiento activo.

Diagrama de cierre de sesión TCP bidireccional.

Frame Offset    Source IP    Dest IP      Description
----- --------- ------------ ------------ ---------------------------------------------------------------------------
   50 4.1529661 10.10.10.104  10.10.10.22 TCP:Flags=...A...F, SrcPort=4657, DstPort=1433, PayloadLen=0, Seq=413460761
   51 4.1529661  10.10.10.22 10.10.10.104 TCP:Flags=...A...., SrcPort=1433, DstPort=4657, PayloadLen=0, Seq=280398321
   52 4.1529661  10.10.10.22 10.10.10.104 TCP:Flags=...A...F, SrcPort=1433, DstPort=4657, PayloadLen=0, Seq=280398321
   54 4.2330441 10.10.10.104  10.10.10.22 TCP:Flags=...A...., SrcPort=4657, DstPort=1433, PayloadLen=0, Seq=413460761

Instrucciones Transact-SQL y paquetes de cierre

En este ejemplo se muestra cómo cerrar una conexión no agrupada, después de dos instrucciones Transact-SQL. Si esta conexión no se ha agrupado, también puede ver los paquetes de mantenimiento activo asociados con el envío de la conexión de nuevo al grupo de conexiones, en lugar de los paquetes de cierre inmediatamente después de la última respuesta del servidor. Se recomienda agrupar conexiones en cualquier tipo de aplicación web o de servicio para permitir la reutilización de la conexión. La agrupación de conexiones reduce el número de conexiones al servidor y minimiza el costo y el retraso asociados a las nuevas conexiones.

Frame Offset    Source IP    Dest IP      Description
----- --------- ------------ ------------ ---------------------------------------------------------------------------
  364 9.1949581 10.10.10.104  10.10.10.22 TDS:SQLBatch, Version = 7.300000, SPID = 0, PacketID = 1, Flags=...AP..., S
  365 9.1949581  10.10.10.22 10.10.10.104 TDS:Response, Version = 7.300000, SPID = 130, PacketID = 1, Flags=...AP...,
  366 9.3043331 10.10.10.104  10.10.10.22 TDS:SQLBatch, Version = 7.300000, SPID = 0, PacketID = 1, Flags=...AP..., S
  367 9.3072631  10.10.10.22 10.10.10.104 TDS:Response, Version = 7.300000, SPID = 130, PacketID = 1, Flags=...AP...,
  375 9.4078491 10.10.10.104  10.10.10.22 TCP:Flags=...A...F, SrcPort=4647, DstPort=1433, PayloadLen=0, Seq=157672648
  376 9.4078491  10.10.10.22 10.10.10.104 TCP:Flags=...A...., SrcPort=1433, DstPort=4647, PayloadLen=0, Seq=192890973
  379 9.4078491  10.10.10.22 10.10.10.104 TCP:Flags=...A...F, SrcPort=1433, DstPort=4647, PayloadLen=0, Seq=192890973
  397 9.5221071 10.10.10.104  10.10.10.22 TCP:Flags=...A...., SrcPort=4647, DstPort=1433, PayloadLen=0, Seq=157672649

Conexión inactiva o agrupada que se cierra

La conexión se cierra 10 segundos después del intercambio keep-alive anterior (consulte la Delta columna ).

Nota:

El analizador marca erróneamente el paquete inicial ACK+FIN (Frame 1881) como un paquete keep-alive, porque el paquete keep-alive ACK anterior. Sin embargo, se está inicializando el cierre de la conexión.

Frame Offset     Delta      Source IP   Dest IP     Description
----- ---------- ---------- ----------- ----------- -----------------------------------------------------------------
 1314 16.3641802  0.0000000 10.10.10.45 10.10.10.51 TCP:[Keep alive]Flags=...A...., SrcPort=51708, DstPort=1433, Payl
 1317 16.3677083  0.0035281 10.10.10.51 10.10.10.45 TCP:[Keep alive ack]Flags=...A...., SrcPort=1433, DstPort=51708, 
 1327 16.4269375  0.0592292 10.10.10.51 10.10.10.45 TCP:[Keep alive]Flags=...A...., SrcPort=1433, DstPort=51708, Payl
 1328 16.4269637  0.0000262 10.10.10.45 10.10.10.51 TCP:[Keep alive ack]Flags=...A...., SrcPort=51708, DstPort=1433, 
 1881 26.7918499 10.3648862 10.10.10.45 10.10.10.51 TCP:[Keep alive ack]Flags=...A...F, SrcPort=51708, DstPort=1433, 
 1886 26.7929474  0.0010975 10.10.10.51 10.10.10.45 TCP:Flags=...A...., SrcPort=1433, DstPort=51708, PayloadLen=0, Se
 1888 26.7929474  0.0000000 10.10.10.51 10.10.10.45 TCP:Flags=...A...F, SrcPort=1433, DstPort=51708, PayloadLen=0, Se
 1890 26.7929947  0.0000473 10.10.10.45 10.10.10.51 TCP:Flags=...A...., SrcPort=51708, DstPort=1433, PayloadLen=0, Se