Spåra nätverksanslutningsstängningssekvensen i Database Engine

Denna artikel presenterar exempel på ett nätverksspår som fångar sekvensen när en Transmission Control Protocol (TCP)-anslutning mellan en klientapplikation och Databasmotor för SQL Server (servern) är stängd. Att förstå dessa mönster är avgörande för att diagnostisera nätverksbeteende, identifiera poolningsstrategier och optimera anslutningshantering i webb- eller tjänsteapplikationer.

Stängningstyper av anslutningar

Den här artikeln ger exempel för normala TCP-anslutningar och Multiple Active Result Sets (MARS)-anslutningar. MARS är en funktion i SQL Server, som introducerades med SQL Server 2005 (9.x), som gör att flera kommandon kan köras på en anslutning utan att behöva rensa resultatet från det första kommandot innan du kör det andra kommandot. MARS uppnås med session-multiplexering (SMUX).

Detta avsnitt beskriver flera exempel på att stänga en nätverksanslutning.

  • Klientens IP-adress är 10.10.10.104
  • Serverns IP-adress är 10.10.10.22

Avslutningspaket

Detta exempel visar en normal sekvens för att stänga en anslutning. Notera de låga bildrutenumren och tidsförskjutningarna. Denna sekvens är troligen en poolad anslutningsstängning. Detta bör ske inom 30 sekunder efter att spårningen börjat, annars kan du också se keep-alive-paket.

Diagram av TCP-sessionens stängning i fyra steg.

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-satser och avslutande paket

Detta exempel visar att man stänger en icke-poolad anslutning efter två Transact-SQL påståenden. Om denna anslutning inte var poolad kunde du också se keep-alive-paket kopplade till att skicka tillbaka anslutningen till anslutningspoolen, istället för att stänga paketen direkt efter det senaste svaret från servern. Vi rekommenderar att man samlar anslutningar i alla typer av webb- eller tjänsteapplikationer för att möjliggöra återanvändning av anslutningen. Anslutningspoolning minskar antalet anslutningar till servern och minimerar kostnaden och fördröjningen som är kopplad till nya anslutningar.

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

Viloläge eller poolad anslutning stängs

Anslutningen stängs 10 sekunder efter föregående keep-alive-utbyte (se Delta kolumnen).

Note

Parsern markerar felaktigt det initiala ACK+FIN paketet (Frame 1881) som ett keep-alive-paket ACK , eftersom det tidigare keep-alive-paketet. Dock initierar den att anslutningen stängs.

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