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.
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