Изменение сетевых настроек ядра Linux для активных живых TCP-сокетов

Если я изменю настройки, например, следующим образом:

# sysctl -w net.core.rmem_default=500000
# sysctl -w net.ipv4.tcp_rmem='4000 90000 10000000' 
  1. Безопасно ли это делать это в сверхмощной производственной машине (CentOS 7)? Существуют ли какие-либо известные риски?
  2. Применяется ли это изменение к ранее установленным сокетам, которые в настоящее время передают данные в системе?
  3. Если нет, требует ли это изменение перезапуска процесса или оболочки для вступления в силу?
]
0
задан 25 April 2019 в 17:39
2 ответа
  1. Это полностью безопасно.

  2. Нет, новые значения этих переменных sysctl влияют только на новые сокеты.

  3. После перезапуска процесс воссоздает сокет с новыми значениями по умолчанию. Но процесс может сам установить размер буфера с помощью параметра сокета SO_RCVBUF.

1
ответ дан 4 December 2019 в 15:43

Согласно документации redhat rmem_default не должно быть больше rmem_max.

rmem_default: размер приемного буфера ОС по умолчанию для всех типов соединений. Так что не задавайте слишком большие значения, пока они не потребуются * по умолчанию работает большую часть времени).

tcp_rmem: Первое значение сообщает ядру минимальный буфер приема для каждого TCP-соединения, и этот буфер всегда выделяется для TCP-сокета, даже при сильном давлении на систему. ... Второе указанное значение сообщает ядру буфер приема по умолчанию, выделенный для каждого сокета TCP. Это значение переопределяет значение / proc / sys / net / core / rmem_default, используемое другими протоколами. ... Третье и последнее значение, указанное в этой переменной, указывает максимальный буфер приема, который может быть выделен для сокета TCP.

вы можете перезагрузить настройки через sysctl --system

0
ответ дан 4 December 2019 в 15:43

Теги

Похожие вопросы