1. Соединения со стороны клиента (Client-side)
Эти параметры определяют, как долго Squid будет ждать ответа от браузера пользователя или держать соединение открытым после завершения запроса.
client_idle_pconn_timeout: Определяет, сколько времени Squid держит открытым постоянное (keep-alive) соединение с клиентом после того, как запрос был выполнен.
Рекомендуемое значение: 1 minute или меньше (по умолчанию часто 2 минуты).
pconn_timeout: Общий таймаут для пассивных соединений.
request_timeout: Сколько времени Squid ждет поступления HTTP-запроса после установления TCP-соединения. Если клиент молчит — соединение обрывается.
Рекомендуемое значение: 30 seconds.
2. Соединения с серверами (Server-side)
Если Squid запросил данные у сайта, а сайт перестал отвечать, эти параметры помогут не «забивать» очередь.
read_timeout: Если в течение этого времени от сервера не пришло ни одного байта данных, Squid закроет соединение.
Рекомендуемое значение: 5 minutes (можно меньше, если интернет стабильный).
pconn_lifetime: Максимальное время жизни постоянного соединения с вышестоящим сервером.
half_closed_clients: По умолчанию on. Если клиент закрывает свою сторону TCP-соединения, но оставляет его «полуоткрытым», Squid может продолжать держать его.
Совет: Попробуйте установить off, чтобы Squid агрессивнее разрывал такие связи.
/etc/squid/squid.conf
Код: Выделить всё
# Тайм-аут простоя для постоянных соединений клиента
client_idle_pconn_timeout 45 seconds
# Тайм-аут ожидания самого запроса
request_timeout 30 seconds
# Как долго держать соединение с сервером при отсутствии данных
read_timeout 2 minutes
# Закрывать полуоткрытые соединения немедленно
half_closed_clients off
# Ограничение времени жизни idle-соединений к серверам
server_idle_pconn_timeout 30 seconds
Как проверить текущую ситуацию?
Чтобы понять, не исчерпаны ли лимиты, используйте встроенную утилиту squidclient:
Эта команда покажет, сколько файловых дескрипторов (соединений) сейчас занято и какой лимит установлен.
Важное примечание по дескрипторам
Если вы закрываете соединения из-за ошибок вроде Out of file descriptors, убедитесь, что лимит в самой ОС достаточно высок. В современных системах лимит в 65535 является стандартом.
Для проверки в Linux:
Посмотрите лимит процесса:
Код: Выделить всё
cat /proc/$(pidof squid)/limits | grep "Max open files"
Если он мал (например, 1024), его нужно увеличить через ulimit или настройки systemd сервиса (LimitNOFILE=65535).
Не забудьте применить настройки:
После редактирования конфига выполните команду: