跟踪数据库引擎上的网络连接关闭序列
本文演示了在客户端应用程序与 SQL Server 数据库引擎(服务器)之间传输控制协议(TCP)连接关闭期间捕获序列的网络跟踪示例。 了解这些模式对于诊断网络行为、识别池策略以及优化 Web 或服务应用程序中的连接管理至关重要。
关闭连接类型
本文提供了常规 TCP 连接和多个活动结果集(MARS)连接的示例。 MARS 是 SQL Server 的一项功能,由 SQL Server 2005 (9.x)引入,它允许在连接上执行多个命令,而无需清理第一个命令的结果,然后再运行第二个命令。 MARS 是通过会话多路复用(SMUX)实现的。
本部分介绍关闭网络连接的几个示例。
- 客户端 IP 地址为
10.10.10.104
- 服务器 IP 地址为
10.10.10.22
关闭数据包
此示例显示了正常的连接关闭序列。 请注意低帧数和时间偏移量。 此序列很可能是共用连接关闭。 这应在跟踪开始后的 30 秒内发生,也可能会看到保持活动数据包。
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
Transact-SQL 语句和关闭数据包
此示例演示在两个 Transact-SQL 语句之后关闭非后台连接。 如果此连接是非池的,则还可以看到与将连接发送回连接池相关的保持连接数据包,而不是紧接在服务器最后一个响应之后的关闭数据包。 建议在任何类型的 Web 或服务应用程序中建立池连接,以允许重新使用连接。 连接池减少了与服务器的连接数,并最大限度地减少了与新连接关联的成本和延迟。
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
正在关闭的空闲或共用连接
连接在上一个保持连接交换后 10 秒关闭(请参阅 Delta
列)。
注意
分析程序错误地将初始 ACK+FIN
数据包(Frame 1881)标记为保持连接 ACK
数据包,因为以前的保持连接数据包。 但是,它正在初始化连接关闭。
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