Назад | Перейти на главную страницу

Размер сетевого пакета в строке подключения к серверу sql для повышения пропускной способности

У нас есть задание загрузки данных, которое перемещает относительно большой объем данных по сети между двумя серверами sql. серверы находятся в одной подсети и между ними есть только переключатель. данные состоят из нескольких больших полей varchar плюс поля xml.

Для увеличения пропускной способности. Я попытался изменить размер сетевого пакета с 4096 по умолчанию на 32627 в строке подключения; Однако, похоже, это не помогает производительности. Я подозреваю, что проблема в том, что, хотя у нас работает гигабайтный Ethernet, "большие кадры" не включены.

Чтобы подтвердить это, я попробовал два теста ping:

пинг -l 1400 -f pdbsql01dul

Работает

пинг -l 4096 -f pdbsql01dul

Пакет должен быть фрагментирован, но установлен DF.

как видите, наибольший размер пакета составляет около 1400

Мой вопрос: если размер Jumbo-фреймов составляет ~ 8096, есть ли польза от установки размера сетевого пакета больше этого?

Изменится ли это, если соединение является локальным по отношению к рассматриваемому серверу?

Что должно произойти, так это то, что настройку MTU в сети Ethernet необходимо увеличить с 1500 до примерно 4096. Эти настройки обычно устанавливаются на странице настроек драйвера. Для хорошей работы в сети вы действительно хотите, чтобы все устройства (включая все коммутаторы Ethernet) в одной сети Ethernet имели одинаковую настройку MTU.


(источник: sysadmin1138.net)

Вот где вы бы изменили его на одном из моих серверов.

Это может помочь? Конечно, может. Меньшая фрагментация пакетов означает меньше работы над стеком TCP для повторной сборки потока трафика. Это может быть не на порядок, но может помочь.

Я полагаю, что локальные для сервера соединения используют каналы, а не TCP-соединения, и, вероятно, на них это изменение не повлияет.

Вы можете попробовать, но я сомневаюсь, что это сильно поможет. TDS как протокол никогда не был рассчитан на высокую пропускную способность. Если вы хотите перемещать данные между двумя экземплярами SQL-сервера, вы можете рассмотреть возможность использования Сервисный брокер вместо этого его сетевой стек гораздо более ориентирован на высокую пропускную способность, чем стек TDS. Вот почему зеркалирование выбирает сетевой стек SSB для связи с резервными зеркальными серверами. Кроме того, семантика перемещения данных SSB намного лучше, чем у связанных серверов, и обычно лучше, чем у пользовательских клиентских приложений.

Я не могу комментировать tcp, фреймы и т. Д., Но я установил размер сетевого пакета SQL Server только однажды, когда-либо, для какого-то мерзкого приложения, которое все еще нуждалось в клиентских инструментах SQL 6.5.

Это одна из тех настроек «не делай этого».