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

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

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

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

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

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

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

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

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

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