Partager via


Tracez la séquence de fermeture de connexion réseau sur le Moteur de base de données

Cet article présente des exemples de trace réseau qui capture la séquence pendant laquelle une connexion TCP (Transmission Control Protocol) entre une application cliente et le serveur SQL Server Moteur de base de données (le serveur) est fermée. La compréhension de ces modèles est essentielle pour diagnostiquer le comportement du réseau, identifier les stratégies de regroupement et optimiser la gestion des connexions dans les applications web ou de service.

Fermeture des types de connexion

Cet article fournit des exemples pour les connexions TCP normales et les connexions MARS (Multiple Active Result Sets). MARS est une fonctionnalité de SQL Server, introduite avec SQL Server 2005 (9.x), qui permet l’exécution de plusieurs commandes sur une connexion sans avoir à nettoyer les résultats de la première commande, avant d’exécuter la deuxième commande. MARS est obtenu via le multiplexage de session (SMUX).

Cette section décrit plusieurs exemples de fermeture d’une connexion réseau.

  • L’adresse IP du client est 10.10.10.104
  • L’adresse IP du serveur est 10.10.10.22

Fermeture des paquets

Cet exemple montre une séquence normale de fermeture de connexion. Notez les nombres d’images faibles et les décalages de temps. Cette séquence est probablement une fermeture de connexion mise en pool. Cela doit se produire dans les 30 secondes suivant le début de la trace, ou vous pouvez également voir des paquets keep-alive.

Diagramme de la fermeture de session TCP à quatre voies.

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

Instructions Transact-SQL et paquets fermants

Cet exemple montre la fermeture d’une connexion non mise en pool, après deux instructions Transact-SQL. Si cette connexion n’a pas été mise en pool, vous pouvez également voir les paquets keep-alive associés à l’envoi de la connexion dans le pool de connexions, au lieu des paquets fermants immédiatement après la dernière réponse du serveur. Nous vous recommandons de regrouper les connexions dans n’importe quel type d’application web ou de service pour autoriser la réutilisation des connexions. Le regroupement de connexions réduit le nombre de connexions au serveur et réduit le coût et le retard associés aux nouvelles connexions.

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

Connexion inactive ou mise en pool fermée

La connexion est fermée 10 secondes après l’échange continu précédent (voir Delta la colonne).

Remarque

L’analyseur marque par erreur le paquet initial ACK+FIN (Frame 1881) comme paquet de conservation active, car le paquet keep-alive ACK précédent. Toutefois, il initialise la fermeture de la connexion.

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