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

Настройка TCP sysctl на centos

У меня есть веб-сайт, который увеличивает время ожидания tcp в часы пик и немного замедляется, вот несколько графиков статистики

атм конфигурации sysctl:

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

Есть идеи, что мне следует изменить / добавить в конфигурацию?

Мое первое предположение состоит в том, что вы видите, что буферы приема вашей сети заполняются, и в этом случае вы можете захотеть увеличить их с помощью sys.net.core.netdev_max_backlog sysctl.

Вы могли видеть много разорванных соединений в TIME_WAIT, и в этом случае вы можете сбросить тайм-аут с помощью net.ipv4.vs.timeout_timewait.

Оба они должны быть идентифицированы с netstat.

Буферы сокетов вашего приложения тоже могут быть слишком маленькими; вы можете поднять их с помощью net.core.rmem_max, net.core.wmem_max, и net.ipv4.tcp_rmem и net.ipv4.tcp_wmem. Однако, вероятно, это не так, но если вы получаете большой трафик, вы можете обнаружить, что увеличение этих размеров очереди буфера сокета помогает справиться с трафиком.

Не забудьте измерить до и после изменения каждого значения. Я рекомендую поискать их в Google, чтобы понять их поведение, чтобы вы могли лучше применить их к своему варианту использования.