
- •1. О Squid, этом faq, и других информационных ресурсах по Squid
- •1.1 Что такое Squid?
- •1.8 Работает ли Squid под Windows nt?
- •1.9 Какие доступны листы рассылки по Squid ?
- •1.10 Я не могу найти описание как отписаться от вашего списка рассылки.
- •1.11 Какие веб-страницы посвящены Squid ?
- •1.12 Поддерживает ли Squid ssl/https/tls?
- •1.13 Каков официальный статус Squid?
- •1.14 Совместим ли Squid c проблемой 2000 ?
- •1.15 Могу ли я заплатить кому-нибудь за поддержку Squid ?
- •1.16 Создатели Squid faQrus
- •1.17 О этом документе
- •2. Получение и компиляция Squid
- •2.1 Какие файлы мне загрузить ?
- •2.2 Как мне откомпилировать Squid?
- •2.3 Какой компилятор мне необходим?
- •2.4 Что еще мне необходимо для компиляции Squid?
- •2.5 А есть откомпилированные бинарники?
- •2.6 Как мне наложить патч ?
- •2.7 Опции configure.
- •2.8 Undefined reference to __inet_ntoa
- •2.9 Как мне получить действительное dns ttl в ip-rtit Squid?
- •2.10 Моя платформа - bsd/os или bsdi и я не могу откомпилировать Squid.
- •2.11 Проблемы компиляции libmiscutil.A на Solaris.
- •2.12 У меня проблемы при компиляции Squid на некоторой платформе.
- •2.13 Я вижу много предупреждений во время компиляции.
- •2.14 Сборка Squid на os/2
- •3. Установка и запуск Squid
- •3.1 Насколько мощная система мне необходима, чтобы запускать Squid?
- •3.2 Как мне установить Squid?
- •3.3 Что делает файл squid.Conf?
- •3.4 А у вас есть пример squid.Conf?
- •3.5 Как мне запустить Squid?
- •3.6 Как мне запускать Squid автоматически во время загрузки системы?
- •3.7 Как узнать запущен ли Squid?
- •3.8 Опции командной строки squid.
- •3.9 Как мне посмотреть как работает Squid ?
- •4. Проблемы настройки
- •4.1 Как мне присоединится к иерархии кешей ?
- •4.9 Как мне настроить в Squid перенаправление всех запросов на другой прокси ?
- •4.10 У меня есть процессы dnsserver, которые не используются, нужно ли мне уменьшить их кол-во в squid.Conf?
- •4.11 Среднее время обработки запроса моим dnsserver достаточно велико, как мне его уменьшить ?
- •4.12 Каким самым простым способом я могу изменить http-порт, установленный по умолчанию?
- •4.13 Возможно ли контролировать насколько велика каждая из cache_dir?
- •4.14 Какой размер cache_dir должен использовать?
- •4.15 Я добавил новую cache_dir. Потеряю ли я свой кеш ?
- •4.16 Squid и http-gw из пакета tis.
- •4.17 Что такое ``http_x_forwarded_for''? Почему squid снабжает ним www-сервера и как мне это прекратить?
- •4.18 Может ли Squid сделать анонимными http-запросы?
- •4.19 Могу ли я заставить Squid ходить напрямую на некоторые сайты?
- •4.20 Могу ли я заставить Squid ходить напрямую на некоторые сайты?
- •4.21 Могу ли я предотвратить закачку больших файлов пользователями?
- •5. Взаимодействие между броузерами и Squid-ом
- •5.1 Ручная настройка Netscape
- •5.2 Автоматическая настройка Netscape
- •5.3 Настройка Lynx и Mosaic
- •5.4 Redundant Proxy Auto-Configuration
- •5.5 Proxy Auto-Configuration with url Hashing
- •5.6 Настройка Microsoft Internet Explorer
- •5.7 Настройка Netmanage Internet Chameleon WebSurfer
- •5.8 Настройка прокси в Opera 2.12
- •5.9 Как мне указать Squid использовать определенное имя пользователя для ftp?
- •5.10 Настройка броузеров для wpad
- •5.11 Настройка броузеров для wpad с dhcp.
- •5.12 Ie 5.0x crops trailing slashes from ftp url's
- •5.13 Ie 6.0 sp1 не работает при использовании аутентификации basic.
- •6. Файлы журналов Squid
- •6.1 Squid.Out
- •6.2 Cache.Log
- •6.3 Useragent.Log
- •6.4 Store.Log
- •6.5 Hierarchy.Log
- •6.6 Access.Log
- •6.7 Результирующие коды Squid
- •6.8 Http status codes
- •6.9 Методы запроса
- •6.10 Коды иерархий
- •Invalid code
- •6.11 Cache/log (Squid-1.X)
- •6.12 Swap.State (Squid-2.X)
- •6.13 Какие лог-файлы я могу безопасно удалить?
- •6.18 Почему я так часто получаю сообщения получаю err_no_clients_big_obj?
- •6.19 Что значит err_lifetime_exp?
- •6.20 Восстановление ``потеряных'' файлов из кеша.
- •6.21 Могу ли я использовать store.Log,чтобы определить был ли объект закеширован ?
- •7.4 Как я могу проксировать/кешировать Real Audio?
- •7.5 Как мне удалить объект из кеша?
- •7.6 Using icmp to Measure the Network
- •Inspecting the database
- •7.7 Почему так мало запросов tcp_ims_miss попадают в лог?
- •7.8 Как мне заставить Squid не кешировать некоторые сервера или url-ы?
- •7.9 Как я могу удалить и вновь создать кеш?
- •7.10 Почему я не могу запустить Squid как root?
- •7.11 Можете ли вы подсказать мне хороший вариант обновления Squid с минимальными затратами времени?
- •7.12 Может ли Squid слушать более одного http-порта ?
- •7.12 Can Squid listen on more than one http port?
- •7.13 Can I make origin servers see the client's ip address when going through Squid?
- •8. Память
- •8.1 Почему Squid использует так много памяти!?
- •8.2 Как мне узнать сколько памяти использует мой процесс Squid ?
- •8.3 Мой процесс Squid безгранично растет.
- •8.4 Я установил параметр cache_mem равным XX, но мой процесс превышает это значение !
- •8.5 Как мне проанализировать использование памяти, основываясь на показаниях кеш-менеджера ?
- •8.6 Значение ``Total memory accounted'' меньше, чем размер моего процесса Squid.
- •8.7 Xmalloc: Unable to allocate 4096 bytes!
- •8.8 Fork: (12) Cannot allocate memory
- •8.9 Как я могу уменьшить размер используемой Squid-ом памяти ?
- •8.10 Использование альтерантивной библиотеки malloc.
- •8.11 Сколько памяти необходимо моему серверу Squid ?
- •9. Менеджер кеша
- •9.1 Что такое кеш-менеджер ?
- •9.2 Как мне его установить ?
- •9.3 Настройка кеш-менеджера для cern httpd 3.0
- •9.4 Настройка кеш-менеджера для Apache
- •9.5 Настройка кеш-менеджера для Roxen 2.0 и более поздних версий
- •9.7 Почему он говорит, что мне небходим пароль и url ?
- •9.8 Я хочу остановить кеш удаленно. Какой пароль ?
- •9.9 How do I make the cache host default to my cache?
- •9.23 Что такое fqdncache и чем он отличается от ipcache?
- •9.24 Что значит ``Page faults with physical I/o: 4897'' ?
- •9.25 Что значит поле ignored в 'cache server list' ?
- •10. Контроль доступа
- •10.1 Введение
- •10.2 Как мне разрешить моим клиентам использовать кеш?
- •10.3 Как мне настроить Squid, чтобы он не кешировал определенный сервер?
- •10.4 Как мне организовать acl списка запрета?
- •10.5 Как мне блокировать доступ к кешу определенным пользователям и группам?
- •10.6 А у вас есть cgi-программа, позволяющая пользователям менять свой пароль доступа к прокси?
- •10.7 Есть ли способ осуществлять поиск ident только для определенного хоста и сравнивать результат со списком пользователей в squid.Conf?
- •10.8 Типичные ошибки
- •10.9 Я установил собственные контроли доступа, но они не работают! Почему?
- •10.10 Прокси-аутентификация и братские кеши
- •10.11 Какой самый простой способ запретить все адреса назначения кроме одного?
- •10.13 Squid не распознает мой поддомен
- •10.14 Почему Squid запрещает доступ к некоторым портам?
- •10.20 Могу ли я устанавливать acl-лы, основанные на mac-адресах, а не на ip?
- •10.21 Отладка acl
- •10.22 Могу ли я ограничить количество соединений для клиента?
- •10.23 Я пытаюсь запретить доступ к foo.Com, но это не срабатывает.
- •10.24 Я хочу изменить или создать собственное сообщение о ошибке.
- •10.25 Я хочу видеть локальную временную зону в сообщениях о ошибке
- •11. Решение проблем
- •11.1 Почему я получаю ``Proxy Access Denied?''
- •11.2 Я не могу заставить работать local_domain.Squidкеширует объекты с моих локальных серверов.
- •11.3 Я получаю Connection Refused, когда кеш пытается получить объект с братского кеша (sibling), хотя братский кеш считает, что он отдал объект моему кешу.
- •11.4 Кончаются файловые дескрипторы.
- •11.5 Что за странные строки о удалении объектов?
- •11.6 Могу ли заставить Windows nt ftp-сервер показывать директории в формате Unix?
- •11.7 Почему я получаю ``Ignoring miss from non-peer X.X.X.X?''
- •11.8 Dns lookups for domain names with underscores (_) always fail.
- •11.9 Почему Squid сообщает: ``Illegal character in hostname; underscores are not allowed?'
- •11.10 Почему я получаю запрет доступа от братского кеша ?
- •11.11 Cannot bind socket fd nn to *:8080 (125) Address already in use
- •11.12 IcpDetectClientClose: error XXX.XXX.XXX.XXX: (32) Broken pipe
- •11.13 IcpDetectClientClose: fd 135, 255 unexpected bytes
- •11.14 Does Squid work with ntlm Authentication?
- •11.15 Опция default parent не работает!
- •11.16 ``Hot Mail'' complains about: Intrusion Logged. Access denied.
- •11.17 Мой Squid становиться слишком медленным после того, как проработает некоторое время.
- •11.18 Warning: Failed to start 'dnsserver'
- •11.19 Как послать отчет о ошибке в Squid
- •11.20 Отладка Squid
- •11.21 Fatal: ipcache_init: dns name lookup tests failed
- •11.22 Fatal: Failed to make swap directory /var/spool/cache: (13) Permission denied
- •11.23 Fatal: Cannot open http Port
- •11.24 Fatal: All redirectors have exited!
- •11.25 Fatal: file_map_allocate: Exceeded filemap limit
- •11.26 Fatal: You've run out of swap file numbers.
- •11.27 I am using up over 95% of the filemap bits?!!
- •11.28 Fatal: Cannot open /usr/local/squid/logs/access.Log: (13) Permission denied
- •11.29 Когда я использую имя пользователя и пароль, я не имею доступа к некоторым файлам.
- •11.30 PingerOpen: icmp_sock: (13) Permission denied
- •11.31 Что такое петля передачи ?
- •11.32 Accept failure: (71) Protocol error
- •11.33 StoreSwapInFileOpened: ... Size mismatch
- •11.34 Почему я получаю fwdDispatch: Cannot retrieve 'https://www.Buy.Com/corp/ordertracking.Asp' ?
- •11.35 Squid не может получить url-ы типа http://3626046468/ab2/cybercards/moreinfo.Html
- •11.36 Я получаю большое количество ошибок типа ``uri has whitespace'' в моем cache.Log, что я должен делать ?
- •11.37 CommBind: Cannot bind socket fd 5 to 127.0.0.1:0: (49) Can't assign requested address
- •11.38 Unknown cache_dir type '/var/squid/cache'
- •11.39 Unrecognized: 'cache_dns_program /usr/local/squid/bin/dnsserver'
- •11.40 Is dns_defnames broken in 2.3.Stable1 and stable2?
- •11.41 What does sslReadClient: fd 14: read failure: (104) Connection reset by peer mean?
- •11.42 Что значит Connection refused?
- •11.43 Squid: error: no running copy
- •11.44 Fatal: getgrnam failed to find groupid for effective group 'nogroup'
- •11.45 ``Unsupported Request Method and Protocol'' for https urLs.
- •11.46 Squid использует 100% cpu
- •11.47 Webmin's cachemgr.Cgi убивает операционную систему
- •11.48 Segment Violation во время запуска или при первом запросе
- •11.49 UrlParse: Illegal character in hostname 'proxy.Mydomain.Com:8080proxy.Mydomain.Com'
- •11.50 Не работают запросы для инетрнациональных доменных имен
- •11.51 Почему иногда я получаю ``Zero Sized Reply''?
- •12. Как работает Squid?
- •12.1 Что такое кешируемые объекты?
- •12.2 Что такое пмс протокол?
- •12.3 Что такое dnsserver ?
- •12.4 Для чего предназначена программа ftpget ?
- •12,5 Ftp put не работает!
- •12.6 Что такое иерархии кэш-памяти? Какие родители, братья и сестры?
- •12.7 Что такое разрешение кеш алгоритм?
- •12,8 Над какими новыми возможностями сейчас работают разработчики Squid?
- •12,9 Расскажите подробнее о рабочих нагрузок интернет-трафика
- •12.10 Каковы компромиссы кэширования с системой кэш nlanr?
- •12.11 Где мне найти больше информации о файервол?
- •12.12 Что такое `` хранения lru истечения Возраст?''
- •12.13 Что такое `` Отказ побед на 1,01; Войдя в хит-Only-режиме в течение 5 минут''?
- •12.14 Перечитывает ли кальмар периодически свой файл конфигурации?
- •12.15 Как unlinkd работу?
- •12.16 Что такое икона url?
- •12.17 Как мне заставить моих обычных ftp-клиентов и спользовать Squid?
- •12.18 Почему Выберите время средние петли так высоко?
- •12.19 Как Squid дело с печеньем?
- •12.20 Как Squid решает, когда, чтобы обновить в кэше объект?
- •12.21 Что такое отложенное чтение ?
- •12.22 Почему входящий трафик моего кэша равным исходящий трафик?
- •12.23 Почему некоторые предметы не попали кэшировать?
- •12.24 Что поддержания активности соотношение означает?
- •12.25 Как работает кэш Squid-алгоритм замены работы?
- •12.26 Какие закрытых и открытых ключей?
- •12.27 Для чего нужна forw_via_db?
- •12.28 Посылает ли Squid пакеты порту 7 (эхо)? Если да, то почему?
- •12.29 Что значит `` предупреждение: Ответ от неизвестных имен [abcd]''?
- •12.30 Как Squid распространения кэш-файлов среди доступных каталогах?
- •12.31 Почему я вижу отрицательную Процент попадания байт?
- •12.32 Что означает сообщение `` Отключение использования закрытых ключей'' означает?
- •12.33 Что такое наполовину закрытый файловый дескриптор?
- •12.34 Что делает - Enable-кучи замену?
- •12.35 Почему действительный размер используемый размер файловой ситсемы больше, чем считает Squid?
- •12.36 Как работают positive_dns_ttl и negative_dns_ttl ?
- •12.37 Что значит swapin md5 несоответствие ?
- •12.38 Что означает не удалось распаковать файл подкачки данных мета ?
- •12.39 Почему не сделать Squid Ident поиска в режиме перехвата?
- •12.40 DnsSubmit: перегрузки очереди, отвергая бла
- •12.41 Что такое пассивные ftp-соединения?
- •13. Multicast
- •13.1 Что такое Multicast?
- •13.2 Как я могу знать, если я нахожусь на Mbone?
- •13.3 Мне следует использовать Multicast пмс?
- •13.4 Как мне настроить Squid для отправки Multicast icp запросы?
- •13.5 Как я знаю, что Multicast ttl использовать?
- •13.6 Как мне настроить Squid, чтобы получать и отвечать на Multicast пмс?
- •14. Системно-зависимые сверхестественности :)
- •14.1 Solaris
- •14.2 FreeBsd
- •14.5 Linux
- •14.7 Irix
- •15. Редиректоры
- •15.1 Что такое редиректор?
- •15.2 Почему используют редиректор?
- •15.3 Как это работает?
- •15.4 А примеры имеются ?
- •15.5 Can I use the redirector to return http redirect messages?
- •15.6 Fatal: All redirectors have exited!
- •15.7 Редиректор не срабатывает при повторной отработке ident
- •16. Кэш Сборники
- •16.1 Что такое кэш дайджест?
- •16.2 Как и почему они используются?
- •16.3 Что такое теория за кэш дайджесты?
- •16.4 Как размер кэша дайджест на Squid определяется?
- •16.5 Что хэш-функции (и сколько их) а Squid использовать?
- •16.6 Как объекты добавляются в кэш дайджест на Squid?
- •16,7 Ли Squid поддержки делеции в кэш дайджесты? Каковы различий / дельт?
- •16,8 Когда и как часто местные дайджест построили?
- •16.9 Как Кэш Дайджесты передаваться между сверстниками?
- •16.10 Как и где хранится кэш дайджесты?
- •16.11 Как Кэш Дайджест статистики в Cache Manager следует интерпретировать?
- •16.12 Какие ложные значения и как они должны быть обработаны?
- •16.13 Как Кэш Дайджест деятельности, связанной прослеживается / отлажена?
- •16.14 А как насчет пмс?
- •16.15 Есть ли Спецификация Cache Digest?
- •16.16 Можно ли будет шататься моменты времени, когда cache_digests извлекаются из сверстников?
- •17. Прозрачное кеширование/проксирование
- •17.1 Прозрачное кеширование для Solaris, SunOs, и bsd систем
- •17.2 Прозрачное кеширование на Linux 2.0 и ipfwadm
- •Этот метод поддерживает только протокол http, gopher и ftp не поддерживаются
- •17.3 Прозрачное кеширование на Linux 2.2 и ipchains
- •17.4 Прозрачное кеширование на Linux 2.4 и netfilter
- •17.5 Прозрачное кеширование и маршуртизаторы Cisco
- •17.6 Прозрачное кеширование на linux 2.0.29 и cisco ios 11.1
- •17.7 Кеш пытается соединится сам с собой ...
- •17.8 Прозрачное кеширование с FreeBsd
- •17.9 Прозрачное кеширование с сервером доступа acc Tigris digital
- •17.10 ``Connection reset by peer'' и Cisco policy routing
- •17.11 Wccp - Web Cache Coordination Protocol
- •Ios Version 11.X
- •Ios Version 12.X
- •17.13 А как насчет wccPv2?
- •17.14 Прозрачное проксирование с свитчами Foundry l4
- •18.3 Конфигурирование Squid 2.2
- •18.4 Конфигурирование Squid 2.1
- •18.5 Как я могу опрашивать Squid snmp Agent
- •18.6 Для чего я могу использовать snmp и Squid?
- •18.7 Как я могу использовать snmp со Squid?
- •18.8 Где я могу найти больше информации о Squid и snmp?
- •18.9 Мониторинг Squid при помощи mrtg
- •19. Squid версии 2
- •19.1 Какие новые возможности?
- •19.2 Как мне теперь настроить 'ssl_proxy'?
- •19.3 Logfile rotation doesn't work with Async I/o
- •19.4 Добавление нового диска для кеша
- •19.5 Squid 2 performs badly on Linux
- •19.6 Как мне настроить proxy authentication в Squid-2?
- •19.7 Почему proxy-auth отвергает всех пользователей в Squid-2.2?
- •19.8 Delay Pools
- •19.9 Могу ли я сохранить мой кеш при обновлении с версии 1.1 до 2?
- •19.10 Пользовательские сообщения о ошибках
- •19.11 Мой squid.Conf от версии 1.1 не работает!
- •20. Режим httpd-акселератора
- •20.1 Что такое режим httpd-акселератора?
- •20.2 Как мне это установить ?
- •20.3 Когда используется httpd-aкселератор, номер порта для редиректа неверен
- •21.5 Сервера идентификации
- •22. Diskd
- •22.1 Что такое diskd?
- •22.7 Как мне настроить распределенную память?
- •22.8 Иногда распределенная память и очереди сообщений не освобождаются, когда Squid завершает работу.
- •22.9 Что за параметры q1 и q2?
- •23. Аутентификация
- •23.1 Как в Squid работает прокси-аутентификация ?
- •23.2 Как мне использовать аутентификацию для контроля доступа?
- •23.3 Кеширует ли Squid запросы аутентификации?
- •23.4 А пароли передаются открытым текстом или шифруются?
- •23.5 Могу ли я использовать Winbind аутентификацию ?
- •24. Термины и определения
- •24.1 Сосед (Neighbor)
- •24.2 Регулярные выражения
- •25. Беспокойство о безопасности
- •25.1 Прокси открытого доступа
- •25.2 Релай почты
14. Системно-зависимые сверхестественности :)
14.1 Solaris
select()
select(3c) не поддерживает более чем 1024 файловых дескрипторов. Скрипт configure по умолчанию должен включить poll() для Solaris. poll() позволяет вам использовать больше файловых дескрипторов, 8192 или более.
Для старых версий Squid вы можете включить poll() вручную, изменив HAVE_POLL в файле include/autoconf.h или добавив -DUSE_POLL=1 к the DEFINES в src/Makefile.
malloc
В libmalloc.a есть утечка памяти. Squid-вый configure не использует -lmalloc на Solaris.
DNS lookups and nscd
от David J N Begley.
DNS lookups can be slow because of some mysterious thing called ncsd. You should edit /etc/nscd.conf and make it say:
enable-cache hosts no
Apparently nscd serializes DNS queries thus slowing everything down when an application (such as Squid) hits the resolver hard. You may notice something similar if you run a log processor executing many DNS resolver queries - the resolver starts to slow.. right.. down.. . . .
According to Andres Kroonmaa, users of Solaris starting from version 2.6 and up should NOT completely disable nscd daemon. nscd should be running and caching passwd and group files, although it is suggested to disable hosts caching as it may interfere with DNS lookups.
Several library calls rely on available free FILE descriptors FD < 256. Systems running without nscd may fail on such calls if first 256 files are all in use.
Since solaris 2.6 Sun has changed the way some system calls work and is using nscd daemon as a implementor of them. To communicate to nscd Solaris is using undocumented door calls. Basically nscd is used to reduce memory usage of user-space system libraries that use passwd and group files. Before 2.6 Solaris cached full passwd file in library memory on the first use but as this was considered to use up too much ram on large multiuser systems Sun has decided to move implementation of these calls out of libraries and to a single dedicated daemon.
Запросы DNS и /etc/nsswitch.conf
от Jason Armistead.
The /etc/nsswitch.conf file determines the order of searches for lookups (amongst other things). You might only have it set up to allow NIS and HOSTS files to work. You definitely want the "hosts:" line to include the word dns, e.g.:
hosts: nis dns [NOTFOUND=return] files
DNS lookups and NIS
by Chris Tilbury.
Our site cache is running on a Solaris 2.6 machine. We use NIS to distribute authentication and local hosts information around and in common with our multiuser systems, we run a slave NIS server on it to help the response of NIS queries.
We were seeing very high name-ip lookup times (avg ~2sec) and ip->name lookup times (avg ~8 sec), although there didn't seem to be that much of a problem with response times for valid sites until the cache was being placed under high load. Then, performance went down the toilet.
After some time, and a bit of detective work, we found the problem. On Solaris 2.6, if you have a local NIS server running (ypserv) and you have NIS in your /etc/nsswitch.conf hosts entry, then check the flags it is being started with. The 2.6 ypstart script checks to see if there is a resolv.conf file present when it starts ypserv. If there is, then it starts it with the -d option.
This has the same effect as putting the YP_INTERDOMAIN key in the hosts table -- namely, that failed NIS host lookups are tried against the DNS by the NIS server.
This is a bad thing(tm)! If NIS itself tries to resolve names using the DNS, then the requests are serialised through the NIS server, creating a bottleneck (This is the same basic problem that is seen with nscd). Thus, one failing or slow lookup can, if you have NIS before DNS in the service switch file (which is the most common setup), hold up every other lookup taking place.
If you're running in this kind of setup, then you will want to make sure that
ypserv doesn't start with the -d flag.
you don't have the YP_INTERDOMAIN key in the hosts table (find the B=-b line in the yp Makefile and change it to B=)
We changed these here, and saw our average lookup times drop by up to an order of magnitude (~150msec for name-ip queries and ~1.5sec for ip-name queries, the latter still so high, I suspect, because more of these fail and timeout since they are not made so often and the entries are frequently non-existent anyway).
Tuning
Solaris 2.x - tuning your TCP/IP stack and more by Jens-S. Vckler
disk write error: (28) No space left on device
You might get this error even if your disk is not full, and is not out of inodes. Check your syslog logs (/var/adm/messages, normally) for messages like either of these:
NOTICE: realloccg /proxy/cache: file system full
NOTICE: alloc: /proxy/cache: file system full
In a nutshell, the UFS filesystem used by Solaris can't cope with the workload squid presents to it very well. The filesystem will end up becoming highly fragmented, until it reaches a point where there are insufficient free blocks left to create files with, and only fragments available. At this point, you'll get this error and squid will revise its idea of how much space is actually available to it. You can do a "fsck -n raw_device" (no need to unmount, this checks in read only mode) to look at the fragmentation level of the filesystem. It will probably be quite high (>15%).
Sun предлагает два решения этой проблемы. Одно из них стоит денег, второе - бесплатное, но его результатом может стать снижение производительности (хотя Sun утвердяет, что этого происходить не должно, даже если учыитывать слишком случайную природу доступа squid к диску).
Первое решение - купить копию VxFS, файловой системы Veritas. This is an extent-based filesystem and it's capable of having online defragmentation performed on mounted filesystems. This costs money, however (VxFS is not very cheap!)
Второе решение состоит в изменении определенных параметров файловой системы UFS. Unmount your cache filesystems and use tunefs to change optimization to "space" and to reduce the "minfree" value to 3-5% (under Solaris 2.6 and higher, very large filesystems will almost certainly have a minfree of 2% already and you shouldn't increase this). You should be able to get fragmentation down to around 3% by doing this, with an accompanied increase in the amount of space available.
Thanks to Chris Tilbury.
Solaris X86 and IPFilter
by Jeff Madison
Important update regarding Squid running on Solaris x86. I have been working for several months to resolve what appeared to be a memory leak in squid when running on Solaris x86 regardless of the malloc that was used. I have made 2 discoveries that anyone running Squid on this platform may be interested in.
Number 1: There is not a memory leak in Squid even though after the system runs for some amount of time, this varies depending on the load the system is under, Top reports that there is very little memory free. True to the claims of the Sun engineer I spoke to this statistic from Top is incorrect. The odd thing is that you do begin to see performance suffer substantially as time goes on and the only way to correct the situation is to reboot the system. This leads me to discovery number 2.
Number 2: There is some type of resource problem, memory or other, with IPFilter on Solaris x86. I have not taken the time to investigate what the problem is because we no longer are using IPFilter. We have switched to a Alteon ACE 180 Gigabit switch which will do the trans-proxy for you. After moving the trans-proxy, redirection process out to the Alteon switch Squid has run for 3 days strait under a huge load with no problem what so ever. We currently have 2 boxes with 40 GB of cached objects on each box. This 40 GB was accumulated in the 3 days, from this you can see what type of load these boxes are under. Prior to this change we were never able to operate for more than 4 hours.
Because the problem appears to be with IPFilter I would guess that you would only run into this issue if you are trying to run Squid as a transparent proxy using IPFilter. That makes sense. If there is anyone with information that would indicate my finding are incorrect I am willing to investigate further.
Changing the directory lookup cache size
by Mike Batchelor
On Solaris, the kernel variable for the directory name lookup cache size is ncsize. In /etc/system, you might want to try
set ncsize = 8192
or even higher. The kernel variable ufs_inode - which is the size of the inode cache itself - scales with ncsize in Solaris 2.5.1 and later. Previous versions of Solaris required both to be adjusted independently, but now, it is not recommended to adjust ufs_inode directly on 2.5.1 and later.
You can set ncsize quite high, but at some point - dependent on the application - a too-large ncsize will increase the latency of lookups.
Defaults are:
Solaris 2.5.1 : (max_nprocs + 16 + maxusers) + 64
Solaris 2.6/Solaris 7 : 4 * (max_nprocs + maxusers) + 320
The priority_paging algorithm
by Mike Batchelor
Another new tuneable (actually a toggle) in Solaris 2.5.1, 2.6 or Solaris 7 is the priority_paging algorithm. This is actually a complete rewrite of the virtual memory system on Solaris. It will page out application data last, and filesystem pages first, if you turn it on (set priority_paging = 1 in /etc/system). As you may know, the Solaris buffer cache grows to fill available pages, and under the old VM system, applications could get paged out to make way for the buffer cache, which can lead to swap thrashing and degraded application performance. The new priority_paging helps keep application and shared library pages in memory, preventing the buffer cache from paging them out, until memory gets REALLY short. Solaris 2.5.1 requires patch 103640-25 or higher and Solaris 2.6 requires 105181-10 or higher to get priority_paging. Solaris 7 needs no patch, but all versions have it turned off by default.