Трассировка последовательности закрытия сетевого подключения в ядро СУБД
В этой статье приведены примеры сетевой трассировки, которая фиксирует последовательность при закрытии подключения протокола TCP между клиентским приложением и сервером SQL Server ядро СУБД (сервер). Понимание этих шаблонов имеет решающее значение для диагностики сетевого поведения, определения стратегий пула и оптимизации управления подключениями в веб-приложениях или приложениях-службах.
Закрытие типов подключений
В этой статье приведены примеры обычных 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. Если это подключение было непуленным, вы также можете увидеть пакеты, связанные с отправкой подключения обратно в пул подключений, а не закрывающие пакеты сразу после последнего ответа с сервера. Мы рекомендуем использовать подключения в пуле в любом веб-приложении или приложении службы, чтобы разрешить повторное использование подключения. Пул подключений уменьшает количество подключений к серверу и сокращает затраты и задержку, связанные с новыми подключениями.
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