Изменить размер MTU в Debian

Сие опубликовал в день года

Стандартный MTU (Maximum Transmission Unit, то есть максимальный блок передаваемых за раз данных) составляет 1500 байт, однако может быть увеличен до числа в диапазоне 1501 - 9198, что зависит от производителя оборудования. Чтобы увеличение MTU прошло успешно, заданный размер должен поддерживаться оборудованием на обоих концах кабеля.

Тестирование

Чтобы убедиться, что ваше оборудование поддерживает большие пакеты, можно воспользоваться утилитой ping. Для тестирования на MacOS используйте команду:

ping -D -s 8184 ip.add.re.ss

В Linux:

ping -M do -s 8972 ip.add.re.ss

В Windows:

ping -f -l 9000 ip.add.re.ss

В *nix системах ping не включает заголовки ICMP (8 байт) и TCP (20 байт), поэтому мы должны вычесть их самостоятельно. Что касается MacOS, то в этом случае реализация ping не позволяет передавать больше 8192 байт, а также мы должны дополнительно вычесть 28 байт.

Возможные результаты

Если вы забыли включить jumbo frames/9k MTU на вашем клиентском устройстве, то получите следующий вывод:

PING ip.add.re.ss (ip.add.re.ss): 8184 data bytes
ping: sendto: Message too long

Если вы увеличили размер MTU на клиенте, но не на конечной... Читать целиком.

Оптимизация Nginx: параметры sendfile, tcp_nodelay и tcp_nopush

Сие опубликовал в день года

Большинство статей про оптимизацию производительности Nginx рекомендуют использовать параметры sendfile, tcp_nodelay и tcp_nopush в конфигурационном файле nginx.conf. Но, к сожалению, они не говорят ни о том как эти параметры влияют на веб-сервер, ни о том как они работают.

tcp_nodelay

Как мы можем заставить сокет отправлять данные в его буфер? Решение лежит в использовании опции TCP_NODELAY в стеке TCP. Активация TCP_NODELAY заставляет сокет отправлять данные в буфер вне зависимости от размера пакета. Опция tcp_nodelay в настройках Nginx добавляет опцию TCP_NODELAY при открытии нового сокета.

Чтобы избежать перегруженности сети стек TCP реализует механизм который ожидает данные в течение 0,2 секунды вследствие чего слишком маленький пакет не будет отправлен. Этот механизм обеспечивается алгоритмом Нейгла и 200 миллисекунд - это значение в UNIX реализации.

Чтобы понять назначение алгоритма Нейгла вам необходимо помнить что интернет используется не только для отправки... Читать целиком.

Наверх