Добрый день, коллеги.
Хотелось бы услышать людей с реальным опытом тюнинга TCP-стека на ядре 2.6. Статей в интернете 100500, и 95% из них переводы/копипаст одного и того же. И все это я уже проштудировал.
Столкнулся с тем, что для новых TCP-соединений первое время (около 2-3 перезодов по страницам сайта, допустим) задержки выше, чем обычно.
Стоит nginx, весь контент в кеше. При первоначальной загрузке основная страница загружается барузер посетителя за 400-500 мс (при пинге до сервера в районе 120). 2-я страница за 280 мс. Третья - четвертая тоже 280 мс. Далее все страницы загружаются за 150 мс. Сам nginx тут не причем. Проблема наблюдается именно при работе с новыми соединениями. Если закрыть браузер, все повторяется; если подождать в пределах keep-alive и продолжить серфинг - все грузится за те же 150мс. Но стоит браузер перезапустить и на новых соединениях опять начнется с 500 мс. Конечно, дело не в браузере.
Природа долгой первой загрузки ясна (разрешение DNS и установка соединения, видимо). Но непонятно почему потом некоторое время все отдается по 280 мс. А потом вдруг 150. Хотелось бы сразу 150.
sysctl:
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 0
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.ip_conntrack_max = 2621440
net.ipv4.netfilter.ip_conntrack_max = 2621440
net.core.netdev_max_backlog = 3000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# and ip route change default via 35.28.51.2 dev eth0 initcwnd 10
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
Помимо всего прочего пытался вертеть по разному:
net.ipv4.tcp_no_metrics_save
net.ipv4.tcp_congestion_control (остановится на htcp)
net.ipv4.tcp_max_syn_backlog
net.ipv4.tcp_max_tw_buckets
net.ipv4.tcp_max_syn_backlog
net.ipv4.tcp_moderate_rcvbuf
net.ipv4.tcp_window_scaling