У меня есть установка, в которой squid находится перед Java-сервером и действует как обратный прокси. Недавно я протестировал сайт под нагрузкой, и если я запускаю на нем 100 потоков, каждый из которых делает запрос с помощью jmeter, я начинаю получать ошибки в моем инструменте тестирования нагрузки, такие как `` нет маршрута к хосту '', даже если инструмент тестирования нагрузки и сервер находятся на такая же машина.
если я запустил следующую команду, где порт 82 - это порт, на котором работает мой сервер Squid:
netstat -ann | grep 82 | wc -l
я получаю 22000 или около того, и большинство из них находятся в TIMED_WAIT. Я думаю, что, возможно, огромное количество сокетов в состоянии TIMED_WAIT истощают ящик ресурсов.
Удобный ответ от StackOverflow:
Существует множество различных ограничений, которые могут повлиять на работу вашего веб-прокси. Как упоминал sysadmin1138, TCP-соединения являются одним из них.
Другой, как Кайл успел опубликовать передо мной, - это файловые дескрипторы. По умолчанию SQUID, по крайней мере, с 2.6, составляет 1024. Чтобы увеличить этот предел, вам нужно перекомпилировать, увеличивая --with-maxfd
. Даже после перекомпиляции с более высоким FD, ulimit
будет действовать для пользователя, запускающего squid. Например, чтобы увеличить лимит ресурсов до 8192, запустите это перед запуском squid:
ulimit -HSn 8192
В наши дни Linux по умолчанию имеет довольно высокий уровень ядра, поэтому вам, вероятно, не придется настраиваться за пределами SQUID для FD. Если вы предоставите вывод журнала, скорее всего, он укажет точную проблему, и мы сможем предоставить более подробные рекомендации.
Может быть слишком много открытых файлов. В unix «все является файлом», включая сокеты. Вам либо нужно увеличить максимальное количество открытых файлов с помощью ulimit
для пользователя или, возможно, также в ядре (/proc/sys/fs/file-max
). Вы также можете поиграть с количеством времени, проведенным в TIME_WAIT, с /proc/sys/net/ipv4/tcp_fin_timeout
Если вы используете Squid 2.7, вы можете установить количество доступных fd без перекомпиляции; http://www.squid-cache.org/Doc/config/max_filedescriptors/