У меня есть веб-сайт, который увеличивает время ожидания 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, чтобы понять их поведение, чтобы вы могли лучше применить их к своему варианту использования.