Мы используем кальмар 3.0 на Centos5.3 и в настоящее время 20 пользователей (Internet Explorer) используют этот прокси. Проблема в том, что доступ через прокси медленнее. Даже простая веб-страница, такая как google.com (.au), занимает на 5 секунд дольше, чем прямое соединение без прокси. Похоже, задержка составляет примерно 2-5 секунд. Отключение кеша для google.com (.au) не помогло. Явное определение dns_nameservers не имеет значения.
Параметры сервера: двухъядерный процессор AMD Opteron (tm) 2220, память 6 ГБ, жесткий диск SCSI 60 ГБ
cache_mem 256 МБ
каталог_кеша ufs / usr / local / squid / var / cache 30000 16 256
maximum_object_size_in_memory 256 КБ
minimum_object_size 0 КБ (0-200 Кб - разница невелика, задержка все равно есть)
maximum_object_size 32 МБ
Как бы вы изменили эти спецификации в squid.conf в зависимости от характеристик сервера. Что может вызвать задержку? Также для более крупных веб-страниц, таких как yahoo.com.au, есть способ получить часть страницы из кеша, а затем остальную часть (изображения в последнюю очередь). На данный момент 15 секунд ничего нет, а затем появляется целая веб-страница.
Моей первой догадкой было бы прослушать трафик с помощью tcpdump и загрузить его в wirehark, чтобы увидеть, где происходит задержка.
tcpdump -i any -s 0 -w /tmp/squid.pcap
(Если вы делаете это через ssh, добавьте в конец «not port ssh».)
После того, как вы загрузите это в wirehark, вы сможете увидеть, где возникает задержка. Я бы рекомендовал сделать это в тихое время, чтобы не было слишком много трафика, закрывающего вам обзор. Еще лучше, если вы можете быть единственным человеком, имеющим доступ к прокси в то время.
Вероятные задержки:
Для некоторых веб-страниц невозможно нарисовать страницу до того, как будет загружена почти вся страница, изображения и все такое. Чтобы ускорить такую страницу, вы можете сделать несколько вещей:
Раньше я использовал Internet Explorer для Macintosh (68k в те дни). Я хорошо помню, что видел значок «газеты», который говорил вам подождать, пока IE вычислял, как отображать страницу (не получая данные: вычисляя ...)
Еще одна вещь, о которой следует знать: некоторые страницы будут явно запрашивать, чтобы они не кэшировались: администратор кеша решает, разрешены или отклонены эти запросы. Обычно это те страницы, которые часто меняются или которые веб-администратор не хочет хранить где-либо еще. Таким образом, на такой странице у вас возникнут дополнительные накладные расходы, поскольку веб-кеш должен обрабатывать страницу от вашего имени, даже если в кеше вообще нет страницы.
Я согласен, что анализ трафика - хороший способ определить, почему что-то задерживается. Какая часть сетевого потока действительно вызывает задержку?
Wireshark (и tcpdump) имеют большой набор фильтров, которые вы можете использовать для очистки трафика: единственная причина, по которой вам действительно придется подождать до тихого времени, - это избежать массивного файла дампа TCP. Однако вы можете получить разумный набор данных, просто ограничившись прямым сетевым трафиком на прокси:
tcpdump -s 0 -n -w tcpdump.dat port 3128
(Порт 3128 - это стандартный порт squid: используйте все, что вам подходит.)
Используя Wireshark, вы можете мгновенно фильтровать на основе одного потока трафика TCP: поэтому вам также не нужно беспокоиться о смешивании разных потоков.
Также посмотрите логи в / var / log / squid и выясните, что происходит с запросом: он идет из кеша? Это идет с удаленного сайта? Попробуйте повторные запросы - страница открывается быстрее после однократного запуска?
Я обнаружил, что это проблема DNS, когда я столкнулся с той же проблемой.
Как только я сменил DNS-сервер в squid.conf на нашего интернет-провайдера, задержка исчезла.