Страницы

Поиск по вопросам

воскресенье, 8 декабря 2019 г.

Размер пакетов от MS SQL не может быть больше 590 байт?

#sql_server #сеть #windows_server_2008_r2


Здравствуйте! Не так давно обнаружил, что MS SQL сервер отправляет клиентам данные
в пакетах размером не более 590 байт, создавая сильную фрагментацию, так как запросы
обычно крупные, что отражено на скриншоте Wireshark:



Я пробовал менять опцию max packet size на 1500, но размер пакетов не изменился даже
после перезагрузки сервера. Я попытался провести диагностику проблемы и вот что удалось
выяснить:


Проблема не в MTU конечных компьютеров - везде значение стоит стандартное в 1500 байт.
На пути между сервером и клиентами нет оборудования с MTU меньше 1500 байт.
команда ping -l 1472 -f до любого клиента проходит успешно.
TCP-соединения устанавливаются с размером окна в 1024 байта (8192 бита).


В связи с этим вопрос - по каким причинам параметр max packet size может не влиять
на размер сетевых пакетов, отсылаемых сервером? Мои идеи насчёт неверной настройки
оборудования или ОС иссякли. Возможно, проблема в самом MSSQL сервере? Кто-нибудь сталкивался
с подобным?

На сервере используется Windows Server 2008 R2 Enterprise.

Клиенты - Windows 7.
    


Ответы

Ответ 1



Я нашёл причину этой фрагментации - это отключенная функция PMTU Discovery в Windows. Если она отключена, протокол TCP будет отправлять пакеты на любые адреса с MTU 576. Цитирую Майкрософт: Если отключить возможность определения PMTU, протокол TCP будет отправлять пакеты с размером MTU 576 байт и со снятым флагом «не фрагментировать». Проблема была решена изменением значения ключа EnablePMTUDiscovery с 0 на 1 в ветке реестра HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters. После перезагрузки компьютера SQL и все другие приложения стали отсылать пакеты по 1514 байт, несмотря на значение MTU самого интерфейса 1500. Честно говоря, я не совсем понимаю причины подобного поведения PMTU Discovery, но проблему удалось обойти понижением MTU интерфейса до 1486.

Комментариев нет:

Отправить комментарий