Delen via


De volgorde van het afsluiten van de netwerkverbinding op de Database Engine volgen

In dit artikel vindt u voorbeelden van een netwerktracering die de reeks vastlegt wanneer een TCP-verbinding (Transmission Control Protocol) tussen een clienttoepassing en de SQL Server Database Engine (de server) wordt gesloten. Inzicht in deze patronen is cruciaal voor het diagnosticeren van netwerkgedrag, het identificeren van poolstrategieën en het optimaliseren van verbindingsbeheer in web- of servicetoepassingen.

Verbindingstypen sluiten

Dit artikel bevat voorbeelden voor normale TCP-verbindingen en MARS-verbindingen (Multiple Active Result Sets). MARS is een functie van SQL Server, geïntroduceerd met SQL Server 2005 (9.x), waarmee meerdere opdrachten kunnen worden uitgevoerd op een verbinding zonder de resultaten van de eerste opdracht op te schonen, voordat de tweede opdracht wordt uitgevoerd. MARS wordt bereikt via sessiemultiplexing (SMUX).

In deze sectie worden verschillende voorbeelden beschreven van het sluiten van een netwerkverbinding.

  • Het IP-adres van de client is 10.10.10.104
  • Het IP-adres van de server is 10.10.10.22

Pakketten sluiten

In dit voorbeeld ziet u een normale volgorde voor het sluiten van de verbinding. Let op de lage framenummers en tijdverschuivingen. Deze reeks is waarschijnlijk een gegroepeerde verbindingssluiting. Dit moet gebeuren binnen 30 seconden na het begin van de trace, of u ziet mogelijk ook keep alive-pakketten.

Diagram van het afsluiten van een vierrichtings-TCP-sessie.

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 verklaringen en afsluitende pakketten

In dit voorbeeld ziet u hoe u een niet-gepoolde verbinding sluit, na twee Transact-SQL instructies. Als deze verbinding niet is gepoold, kunt u ook keep alive-pakketten zien die zijn gekoppeld aan het terugsturen van de verbinding naar de verbindingsgroep, in plaats van de afsluitende pakketten direct na het laatste antwoord van de server. We raden u aan verbindingen in een soort web- of servicetoepassing te groeperen om opnieuw gebruik van verbindingen mogelijk te maken. Het groeperen van verbindingen vermindert het aantal verbindingen met de server en minimaliseert de kosten en vertraging die worden gekoppeld aan nieuwe verbindingen.

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

Niet-actieve of gegroepeerde verbinding die wordt gesloten

De verbinding wordt 10 seconden na de vorige keep alive-uitwisseling gesloten (zie Delta kolom).

Notitie

De parser markeert per ongeluk het eerste ACK+FIN-pakket (Frame 1881) als een keep-alive ACK-pakket, omdat het vorige keep-alive-pakket als zodanig is gemarkeerd. Het is echter bezig met het initialiseren van de afsluiting van de verbinding.

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