Настройка TCP BBR

Настройка TCP BBR

Adam

<<<<Вернуться назад

Оптимизация с помощью скрипта

Откройте PuTTY и подключитесь к серверу.

Перейдите в ту директорию, куда вы загрузили скрипт optimise_server.sh:

https://disk.yandex.ru/d/wA9HYTjVs9Z8jQ

cd /home/your-username/

Сделайте скрипт исполняемым:

chmod +x optimise_server.sh

После того как скрипт стал исполняемым, вы можете его запустить:

sudo ./optimise_server.sh

Если он запросит перезагрузку сервера, выполните команду reboot после завершения работы скрипта


Ручная настройка BBR и FQ

1. Проверка версии Ядра Linux

TCP BBR поддерживается начиная с версии ядра Linux 4.9. Вы можете проверить версию вашего ядра с помощью команды uname -r.


2. Настройка TCP BBR

Откройте файл /etc/sysctl.conf для редактирования: 

sudo nano /etc/sysctl.conf


3. Добавьте следующую строку в конец файла

net.core.default_qdisc=fq

net.ipv4.tcp_congestion_control=bbr


4. Сохраните файл и примените изменения

sudo sysctl -p


5. Проверьте текущий планировщик очередей:

sysctl net.core.default_qdisc

Вы должны увидеть: net.core.default_qdisc = fq.


6. Проверьте текущий алгоритм управления перегрузкой:

sysctl net.ipv4.tcp_congestion_control

Вы должны увидеть: net.ipv4.tcp_congestion_control = bbr.


BBR (Bottleneck Bandwidth and Round-trip propagation time) — это алгоритм управления перегрузкой в сети, разработанный Google. Он улучшает скорость передачи данных и уменьшает задержки, определяя максимальную пропускную способность канала и минимальное время задержки, что позволяет эффективно использовать доступные сетевые ресурсы.


FQ (Fair Queuing) — это алгоритм планирования пакетов, который распределяет сетевые ресурсы равномерно между всеми потоками данных, предотвращая доминирование одного потока над другими. В сочетании с BBR, FQ помогает минимизировать задержки и обеспечить стабильную работу сети при высокой нагрузке.


Разбор параметров:

  1. net.core.default_qdisc=fq

Описание: Устанавливает алгоритм планирования очереди по умолчанию на FQ (Fair Queuing).

Значение: Этот алгоритм помогает равномерно распределять пропускную способность между всеми потоками данных, предотвращая доминирование одного потока над другими.


2. net.ipv4.tcp_congestion_control=bbr

Описание: Устанавливает алгоритм управления перегрузкой TCP на BBR.

Значение: BBR оптимизирует использование пропускной способности и уменьшает задержки в сети.


3. net.core.rmem_max = 67108864

Описание: Устанавливает максимальный размер буфера приема для сокетов.

Значение: Увеличивает максимальный размер буфера для приема данных, что может быть полезно для высокоскоростных соединений.


4. net.core.wmem_max = 67108864

Описание: Устанавливает максимальный размер буфера передачи для сокетов.

Значение: Увеличивает максимальный размер буфера для передачи данных, улучшая производительность при высоких нагрузках.


5. net.core.wmem_default = 2097152

Описание: Устанавливает размер буфера передачи по умолчанию.

Значение: Увеличивает стандартный размер буфера для передачи данных, улучшая стабильность и скорость соединений.


6. net.core.netdev_max_backlog = 10240

Описание: Устанавливает максимальный размер очереди входящих пакетов на интерфейсе.

Значение: Увеличение этого значения позволяет обработать больше входящих пакетов, прежде чем они будут отброшены, что может улучшить производительность при высокой нагрузке.


7. net.core.somaxconn = 8192

Описание: Устанавливает максимальный размер очереди ожидающих подключений.

Значение: Увеличение этого значения полезно для серверов с большим количеством входящих подключений (например, веб-серверы).


8. net.ipv4.tcp_syncookies = 1

Описание: Включает использование syncookies для предотвращения атак типа SYN flood.

Значение: Защищает сервер от атак SYN flood, что делает его более устойчивым к перегрузкам.


9. net.ipv4.tcp_tw_reuse = 1

Описание: Позволяет повторное использование сокетов в состоянии TIME_WAIT.

Значение: Уменьшает количество сокетов в состоянии TIME_WAIT, что может быть полезно для серверов с большим количеством короткоживущих соединений.


10. net.ipv4.tcp_fin_timeout = 30

Описание: Устанавливает таймаут закрытия соединения (FIN) в секундах.

Значение: Уменьшение этого времени позволяет быстрее освобождать ресурсы, связанные с закрытием соединений.


11. net.ipv4.tcp_keepalive_time = 1200

Описание: Устанавливает время в секундах между TCP keepalive проверками.

Значение: Увеличивает частоту проверки активных соединений, что помогает быстрее выявлять и закрывать неактивные соединения.


12. net.ipv4.tcp_keepalive_probes = 5

Описание: Устанавливает количество keepalive проверок, после которых соединение считается неактивным.

Значение: Ускоряет выявление и завершение неактивных соединений.


13. net.ipv4.tcp_keepalive_intvl = 30

Описание: Устанавливает интервал между TCP keepalive проверками.

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


14. net.ipv4.tcp_max_syn_backlog = 10240

Описание: Устанавливает максимальное количество полуоткрытых (SYN) соединений, ожидающих завершения.

Значение: Увеличение этого значения позволяет серверу обрабатывать больше одновременных попыток подключения, что полезно для серверов с высокой нагрузкой.


15. net.ipv4.tcp_max_tw_buckets = 5000

Описание: Устанавливает максимальное количество сокетов в состоянии TIME_WAIT.

Значение: Огранивает количество сокетов в состоянии TIME_WAIT, что снижает использование системных ресурсов.


16. net.ipv4.tcp_fastopen = 3

Описание: Включает TCP Fast Open (TFO), что позволяет ускорить процесс установления соединения.

Значение: Ускоряет установление TCP соединений, что особенно полезно для веб-серверов.


17. net.ipv4.tcp_mem = 25600 51200 102400

Описание: Устанавливает параметры памяти для TCP в килобайтах (минимальный, начальный и максимальный размер).

Значение: Эти параметры контролируют, сколько памяти ядро выделяет для буферов TCP, что влияет на производительность сети.


18. net.ipv4.udp_mem = 25600 51200 102400

Описание: Устанавливает параметры памяти для UDP в килобайтах (минимальный, начальный и максимальный размер).

Значение: Эти параметры аналогичны TCP, но применяются к UDP соединениям.


19. net.ipv4.tcp_rmem = 16384 262144 8388608

Описание: Устанавливает размер буфера приема для TCP соединений (минимальный, начальный и максимальный).

Значение: Увеличивает размеры буферов для приема данных, что полезно для высокоскоростных соединений.


20. net.ipv4.tcp_wmem = 32768 524288 16777216

Описание: Устанавливает размер буфера передачи для TCP соединений (минимальный, начальный и максимальный).

Значение: Увеличение буфера передачи улучшает производительность при отправке данных.


21. net.ipv4.tcp_mtu_probing = 1

Описание: Включает автоматическое определение максимального размера сегмента (MTU).

Значение: Это позволяет избегать проблем с фрагментацией пакетов, улучшая стабильность и скорость соединений.


22. net.ipv4.tcp_slow_start_after_idle=0

Описание: Отключает медленный старт после периода бездействия.

Значение: Увеличивает скорость восстановления пропускной способности после простоя, что улучшает производительность для соединений с паузами.


23. fs.inotify.max_user_instances = 8192

Описание: Увеличивает количество inotify инстанций, которые могут быть созданы пользователем.

Значение: Это полезно для систем, которые отслеживают большое количество файлов или каталогов, улучшая производительность мониторинга файловой системы.


24. net.ipv4.ip_local_port_range = 1024 45000

Описание: Определяет диапазон локальных портов, доступных для динамического назначения.

Значение: Увеличивает диапазон доступных портов, что полезно для серверов с большим количеством исходящих соединений.

Report Page