Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
squid.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
1.45 Mб
Скачать

8.3 Мой процесс Squid безгранично растет.

Скорее всего вы завысили значение параметра cache_mem. См. секцию `` Как я могу уменьшить размер используемой Squid-ом памяти ?'' entry below.

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

Утечки памяти - серьезная проблема для программ (типа Squid), которые выполняют все свои процессы как единый процесс. Squid имел проблемы с утечками пямяти. Но по мере "взросления" программы, есть надежда, что все утечки памяти были нами исправлены, а новые достаточно просто идентифицировать.

Утечки памяти могут также пристуствовать в ваших системных бибилотеках таких как libc.a или libmalloc.a. Если вы наблюдаете явление постоянно растущего в размере процесса, мы предлагаем вам дя начала попробовать альтернативную библиотеку malloc.

8.4 Я установил параметр cache_mem равным XX, но мой процесс превышает это значение !

Парамерт cache_mem НЕ указывает максимальный размер для процесса. Он только определяет сколько памяти будет использоваться для кеширования ``горячих'' (самых популярных) ответов. Действительное использование памяти Squid-ом сильно зависит от размер вашего кеша (дискового пространства) и количества ваших входящих запросов. Уменьшение значения cache_memобычно уменьшает размер процесса, но не обязятельно, есть и другие способы уменьшить использование памяти Squid-ом (см. ниже).

8.5 Как мне проанализировать использование памяти, основываясь на показаниях кеш-менеджера ?

Замечание:эта информация верна для версии Squid-1.1.

Посмотрите на формируемую при помощи cachemgr.cgi страницу Cache Information. Пример:

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

Обратите внимание, что в пункте ``arena'' mallinfo() reports 94M in ``arena.'' Это значение достаточно близко к показаниям top (97M).

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

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

The Meta Data list gives the breakdown of where the accounted memory has gone. 45% has gone to StoreEntry and URL strings. Another 42% has gone to buffering hold objects in VM while they are fetched and relayed to the clients (Pool for in-memory object).

The pool sizes are specified by squid.conf parameters. In version 1.0, these pools are somewhat broken: we keep a stack of unused pages instead of freeing the block. In the Pool for in-memory object, the unused stack size is 1/2 of cache_mem. The Pool for disk I/O is hardcoded at 200. For MemObject and Request it's 1/8 of your system's FD_SETSIZE value.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]