У меня есть приложение ajax, которое делает запрос каждые 3 секунды, запрашиваемая страница устанавливает заголовок в (header ("Connection: Keep-Alive, close");), затем выполняет запрос к базе данных и возвращает самые свежие данные.
Значение TIME_WAIT составляет 60 секунд, поэтому даже если я закрываю соединение на запрошенной странице (например, «Соединение: Keep-Alive, закрыть»), соединение, кажется, присутствует в течение следующих 60 секунд (это происходит для каждого запроса Ajax. что я делаю), поэтому в течение 1 минуты выполняется 20 запросов, а общее время TIME_WAIT для этого IP-адреса составляет около 20
Можно ли уменьшить TIME_WAIT до 15 секунд, уменьшить общее TIME_WAITS или можно принудительно закрыть соединение после каждого запроса Ajax
Любая помощь будет оценена
Спасибо
Вы можете использовать параметр ядра net.ipv4.tcp_fin_timeout:
# sysctl net.ipv4.tcp_fin_timeout=15
Отредактируйте /etc/sysctl.conf, добавьте в конец
net.ipv4.tcp_fin_timeout = 15
затем запустите:
# sysctl -p
Connection: keep-alive, close
недопустимый HTTP 1.1, так как ровно один токен подключения разрешено, поэтому я бы ожидал, что этот заголовок будет проигнорирован и, тем не менее, будет активен keep-alive; в HTTP 1.0 тег «Connection» означает совсем другое.
Не должно быть никакой технической разницы, является ли соединение «переработанным» или нет, и вы должны оставить этот выбор браузеру. Игра с таймаутами FIN почти никогда не бывает хорошей идеей.