Главная > Програмное обеспечение > для Internet >
SQUID Часто задаваемые вопросы [7/9]

6 Кеш-менеджер

[Contributed by Jonathan Larmour <JLarmour@origin-at.co.uk>]

6.1 Что такое кеш-менеджер?

Кеш-менеджер (cachemgr.cgi) это CGI утилита для просмотра статистики работающего процесса squid. Кеш-менеджер это простой способ управления кешем и просмотра статистики без захода на сервер.

6.2 Как его установить?

Прежде всего это зависит от web сервера, который Вы используете. Ниже Вы найдете инструкции по настройке CERN и Apache серверов для пользования cachemgr.cgi.

После того как Вы изменили конфигурационные файлы сервера, нужно или перезапустить web сервер, либо послать ему SIGHUP, чтобы он пересчитал файлы настройки.

Когда Вы закончите конфигурировать web сервер, то сможете подключиться браузером к кеш-менеджеру по URL:

http://www.example.com/Squid/cgi-bin/cachemgr.cgi

6.3 Настройка CERN httpd 3.0 для работы с кеш-менеджером

Во-первых, следует убедиться, что только указанные рабочие станции имеют доступ к кеш-менеджеру. Их надо задать в CERN httpd.conf, а не в squid.conf.
        Protection MGR-PROT {
                 Mask    @(workstation.example.com)
        }
Можно задавать шаблонами, IP адресами, в том числе и через запятую. Возможны и другие способы защиты. Обратитесь к документации по серверу.

Также следует добавить:

        Protect         /Squid/*        MGR-PROT
        Exec            /Squid/cgi-bin/*.cgi    /usr/local/squid/bin/*.cgi
чтобы отметить для MGR-PROT, что скрипт выполняемый.

6.4 Настройка Apache для работы с кеш-менеджером

Сначала убедитесь, что директория cgi-bin прописана в ScriptAlias в файле srm.conf Вашего Apache, как-то так:
ScriptAlias /Squid/cgi-bin/ /usr/local/squid/cgi-bin/
Не советуем делать ScriptAlias на всю директорию /usr/local/squid/bin где лежат бинарники Squid.

Затем, надо задать рабочие станции имеющие доступ к кеш-менеджеру. Это задается в файле access.conf Apache, а не в squid.conf. В конце access.conf, вставьте:

        <Location /Squid/cgi-bin/cachemgr.cgi>
        order deny,allow
        deny from all
        allow from workstation.example.com
        </Location>
Можно вписать несколько строк, можно добавить домены или сети.

Также, cachemgr.cgi может быть защищен паролем. Надо добавить следующие строки в access.conf:

        <Location /Squid/cgi-bin/cachemgr.cgi>
        AuthUserFile /path/to/password/file
        AuthGroupFile /dev/null
        AuthName User/Password Required
        AuthType Basic
        <Limit GET>
        require user cachemanager
        </Location>
В документации Apache Вы найдете информацию об использовании htpasswd для задания пароля.

6.5 Задание ACL (списка пользователей) для кеш-менеджера в squid.conf

По умолчанию доступ к кеш-менеджеру задан в squid.conf так:
        acl manager proto cache_object
        acl localhost src 127.0.0.1/255.255.255.255
        acl all src 0.0.0.0/0.0.0.0
Со следующими правами:
        http_access deny manager !localhost
        http_access allow all
Первая запись в ACL нужна для кеш-менеджера, так как он для опроса squid использует специальный cache_object протокол. Можете сами попробовать:

telnet mycache.example.com 3128
GET cache_object://mycache.example.com/info HTTP/1.0

По умолчанию, если запрос для cache_object, и запрос не с локальной машины, то доступ будет закрыт, в противном случае - открыт.

Фактически, так как доступ разрешен только с локальной машины, то в поле cachemgr.cgi можно указать в качестве кеш хоста localhost. Мы рекомендуем следующее:

        acl manager proto cache_object
        acl localhost src 127.0.0.1/255.255.255.255
        acl example src 123.123.123.123/255.255.255.255
        acl all src 0.0.0.0/0.0.0.0
Где 123.123.123.123 это IP адрес Вашего web сервера. Затем измените правила так:
        http_access deny manager !localhost !example
        http_access allow all
По умолчанию подразумевается, что web сервер находится на той же машине, что и squid. Учтите, что обращение кеш-менеджера к squid происходит через web сервер, а не браузер. Так что, если Ваш web сервер находится где-то в другом месте, IP адрес web сервера, на котором установлен cachemgr.cgi должен быть указан вместо example в вышеприведенном примере.

Не забывайте каждый раз после изменения squid.conf посылать SIGHUP squid'у.

6.6 Почему он спрашивает у меня какой-то пароль и URL?

Если Вы посмотрите в выпадающем списке, то увидите, что пароль нужен только для остановки кеша, а URL нужен для обновления объекта (то есть, повторного получения его с исходного сервера). Для получения информации от cachemgr.cgi пароль не требуется.

6.7 Я хочу удаленно остановить кеш. Какой пароль?

В squid.conf есть директива cachemgr_passwd.

6.8 Как сделать, чтобы в поле cache host по умолчанию было имя моего кеша?

Найдите в файле Makefile.in следующую строку:
        HOST_OPT        = # -DCACHEMGR_HOSTNAME="getfullhostname()"
Если web сервер с cachemgr.cgi запущен на той же машине, что и Squid просто уберите #. Если же web сервер какой-то другой, то:
        HOST_OPT        = -DCACHEMGR_HOSTNAME=\"mycache.example.com\"
После этих изменений следует перекомпилировать и переустановить cachemgr.cgi.

6.9 Какая разница между TCP и UDP соединениями Squid?

Браузеры и кеши используют TCP соединения для получения объектов с web серверов или кешей. UDP соединения используются когда другой кеш использует Ваш в качестве братского или родительского на предмет наличия нужного объекта. UDP соединения это ICP запросы.

6.10 Он говорит, что срок хранения кеша истечет в 1970 году!

Не волнуйтесь. Обычное (и в общем-то разумное) поведение squid это перезаписывать объекты, срок хранения которых истек.

6.11 Что значат записи мета-данных?

StoreEntry
Запись описывает объект кеша.
IPCacheEntry
Запись в кеше DNS.
Hash link
Звено в структуре хэш-таблицы.
URL strings
Сами строки URL, указывающие на номер объекта в кеше, позволяющие обращаться к StoreEntry.
В основном похоже на log файл в директории cache:
PoolMemObject structures
Информация об объектах находящихся в памяти, (например, в процессе передачи).
Pool for Request structures
Информация о каждом запросе.
Pool for in-memory object
Пространство для принятых объектов.

6.12 Pool for in-memory object огромен и не становится меньше! Это что утечка памяти?

Нет. Этот пул только увеличивается. Он равен самому большому объекту когда либо кешируемому squid . Если Вы не хотите, чтобы он был такого размера, уменьшите значение cache_mem и размер объектов для gopher, http и ftp в squid.conf.

6.13 Значение поля "Total accounted" не совпадает с размером занимаемым моим squid!

Если это значение близко к упомянотуму, не волнуйтесь. Если squid занимает намного больше, возможно это утечка памяти, и все что можно делать это ждать новых патчей и время от времени перезапускать squid.

Если squid занимает гораздо меньше, чем в этом поле, будьте осторожны! Что-то не так, следует перезапустить squid.

6.14 В разделе utilization, что есть Other?

Other это категория, в каторую попадают объекты не попавшие ни в какую другую.

6.15 В разделе utilization, почему колонка Transfer KB/sec всегда нулевая?

Эта колонка содержит грубое приближение отношения переданных данных к полному времени работы кеша. Эти данные ненадежные и практически бесполезные.

6.16 В разделе utilization, что значит Object Count?

Число объектов данного типа, находящихся в данный момент в кеше.

6.17 В разделе utilization, что значит Max/Current/Min KB?

Это относится к увеличиваемому/текущему/уменьшаемому размеру всех объектов этого типа.

6.18 О чем раздел I/O?

Это гистограммы числа байт взятых из сети вызовом read(2). Довольно полезны для определения максимального размера буферов.

6.19 Что находится в разделе Objects?

Предупреждение: в этом разделе Ваш браузер получит список всех URL кеша и статистику о них. Он может быть очень, очень большим. Иногда он может быть больше, чем доступная Вашему клиенту память! Вероятно Вам эта информация никогда не понадобится.

6.20 Для чего раздел VM Objects?

VM Objects это объекты находящиеся в виртуальной памяти. Эти объекты уже скачены и находятся в памяти для быстрого доступа к ним.

6.21 Что значит AVG RTT?

Average Round Trip Time. Показывает среднее время, прошедшее от посылки ICP ping до прихода ответа.

6.22 В разделе IP cache , какая разница между hit, negative hit и miss?

HIT значит, что документ найден в кеше. MISS, что не найден. Negative hit означает, что он находился в кеше, но не существует.

6.23 Что значит содержимое раздела IP cache?

Hostname это имя, которое следует преобразовать.

Для колонки Flags:

C
Кеширован.
N
Не кеширован.
P
Запрос отложен для посылки.
D
Запрос послан и ожидается ответ.
L
Запись блокирована, потому что выступает в роли родителя или брата.
В колонке TTL представлены "Time To Live" (то есть, как долго запись в кеше действительна). (Может быть отрицательным, если срок хранения документа истек.)

Колонка N это число IP адресов, которые имеет данный hostname.

В конце строки перечислены остальные IP адреса, относящиеся к этой записи в IP cache.

6.24 Как анализировать использование памяти из данных cachemgr.cgi?

Взгляните на страницу Cache Information Вашего cachemgr.cgi. Например:
        Memory usage for squid via mallinfo():
               Total space in arena:   94687 KB
               Ordinary blocks:        32019 KB 210034 blks
               Small blocks:           44364 KB 569500 blks
               Holding blocks:             0 KB   5695 blks
               Free Small blocks:       6650 KB
               Free Ordinary blocks:   11652 KB
               Total in use:           76384 KB 81%
               Total free:             18302 KB 19%


        Meta Data:
        StoreEntry                246043 x 64 bytes =  15377 KB
        IPCacheEntry              971 x   88 bytes  =     83 KB
        Hash link                 2 x   24 bytes    =      0 KB
        URL strings                                 =  11422 KB
        Pool MemObject structures 514 x  144 bytes  =     72 KB (    70 free)
        Pool for Request structur 516 x 4380 bytes  =   2207 KB (  2121 free)
        Pool for in-memory object 6200 x 4096 bytes =  24800 KB ( 22888 free)
        Pool for disk I/O         242 x 8192 bytes =   1936 KB (  1888 free)
        Miscellaneous                              =   2600 KB
        total Accounted                            =  58499 KB
В первой строке mallinfo() сообщает, что используетсяr 94M. Это значение близко к тому, что показывает top (97M).

Из этих 94M, 81% (76M) реально используется в этот момент. Остальное высвобождено, или зарезервировано malloc(3) и пока не используется.

Из 76M используемых, можно рассчитывать на 58.5M (76%). Остальное отведено под вызовы malloc(3).

Список Meta Data содержит информацию о том, куда потрачена доступная память. 45% ушло на StoreEntry и хранение URL строк. Другие 42% потрачены на хранение объектов в виртуальной памяти, пока они доставляются клиентам (Pool for in-memory object).

Размеры пула задаются в squid.conf. В версии 1.0, они несколько туповатые: там хранится стек неиспользованных страниц, вместо того чтобы освобождать этот блок. В Pool for in-memory object, размер этого стека составляет 1/2 cache_mem. Размер Pool for disk I/O жестко задан в 200. Для MemObject и Request это 1/8 величины FD_SETSIZE.

Если Вам нужно снизить количество памяти процесса, мы рекомендуем уменьшить максимальные размеры объектов в строках 'http', 'ftp' и 'gopher' конфигурации. Также можно уменьшить cache_mem. Но если сделать cache_mem слишком маленьким, то некоторые объекты могут не сохраняться на диск при большой загрузке. Новые версии Squid позволяют задать memory_pools off отключая таким образом пул свободной памяти.

6.25 Что такое fqdncache и чем отличается от ipcache?

IPCache содержит данные о преобразовании Hostname в IP-Number, а FQDNCache содержит обратные данные.

Например:


Страница 1 2 3 4 5 6 7 8 9 <<< Предыдущая Следущая >>>


Украинская Баннерная Сеть

Главная  Алфавитный индекс  Справка  Добавить FAQ  E-mail
Новости  Поиск по сайту

Copyright © 2001 - 2003 Olexandr Slobodyan.
Сайт создан в системе uCoz