Tracciare la sequenza di chiusura della connessione di rete nel motore di database
Questo articolo presenta esempi di traccia di rete che acquisisce la sequenza durante la chiusura di una connessione TCP (Transmission Control Protocol) tra un'applicazione client e sql Server motore di database (il server). Comprendere questi modelli è fondamentale per diagnosticare il comportamento della rete, identificare le strategie di pool e ottimizzare la gestione delle connessioni nelle applicazioni Web o di servizio.
Chiusura dei tipi di connessione
Questo articolo fornisce esempi per le normali connessioni TCP e le connessioni MARS (Multiple Active Result Sets). MARS è una funzionalità di SQL Server, introdotta con SQL Server 2005 (9.x), che consente l'esecuzione di più comandi in una connessione senza dover pulire i risultati dal primo comando, prima di eseguire il secondo comando. MARS viene ottenuto tramite multiplexing di sessione (SMUX).
In questa sezione vengono descritti diversi esempi di chiusura di una connessione di rete.
- L'indirizzo IP del client è
10.10.10.104
- L'indirizzo IP del server è
10.10.10.22
Chiusura di pacchetti
Questo esempio mostra una normale sequenza di chiusura della connessione. Prendere nota dei numeri di fotogrammi bassi e degli offset di tempo. Questa sequenza è probabilmente una chiusura della connessione in pool. Questo problema dovrebbe verificarsi entro 30 secondi dall'inizio della traccia oppure potrebbero essere visualizzati anche pacchetti keep-alive.
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
Istruzioni Transact-SQL e pacchetti di chiusura
In questo esempio viene illustrata la chiusura di una connessione non con pool, dopo due istruzioni Transact-SQL. Se questa connessione non è stata inserita in pool, è anche possibile visualizzare pacchetti keep-alive associati all'invio della connessione al pool di connessioni, anziché i pacchetti di chiusura immediatamente dopo l'ultima risposta dal server. È consigliabile raggruppare le connessioni in qualsiasi tipo di applicazione Web o di servizio per consentire il riutilizzo della connessione. Il pool di connessioni riduce il numero di connessioni al server e riduce al minimo i costi e il ritardo associati alle nuove connessioni.
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
Connessione inattiva o in pool chiusa
La connessione viene chiusa 10 secondi dopo lo scambio keep-alive precedente (vedere Delta
la colonna).
Nota
Il parser contrassegna erroneamente il pacchetto iniziale ACK+FIN
(Frame 1881) come pacchetto keep-alive ACK
, perché il pacchetto keep-alive precedente. Tuttavia, sta inizializzando la chiusura della connessione.
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