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

22.7 Как мне настроить распределенную память?

Распередленная память использует набор параметров подобных очереди сообщений. DISKD использует по одной области распределенной памяти для каждой cache_dir. Каждая область распределенной памяти имеет размер около 800 килобайт. Возможно вам придется изменить параметы распределенной памяти для вашей системы:

SHMSEG

Макс. кол-во сегментов распеределенной памяти на процесс.

SHMMNI

Макс. кол-во сегментов распределенной памяти для системы.

SHMMAX

Наибольший допустимый размер сегмента распределенной памяти.

SHMALL

Общее кол-во распереденной памяти, которое может быть использовано.

Для Squid и DISKD, SHMMNI и SHMMNI должны быть больше или равны количеству cache_dir, которое вы имеете. SHMMAX должен быть не меньше 800 килобайт. SHMALL должно быть не меньше SHMMAX 800 килобайт умноженных на кол-во cache_dir.

FreeBSD

В вашем ядре должна быть опция

options SYSVSHM

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

options SHMSEG=16 # max shared mem id's per process

options SHMMNI=32 # max shared mem id's per system

options SHMMAX=2097152 # max shared memory segment size (bytes)

options SHMALL=4096 # max amount of shared memory (pages)

Digital Unix

Очередь сообщений поддерживается ядром по умолчанию. Установите следующие опции:

options SHMSEG="16" # max shared mem id's per process

options SHMMNI="32" # max shared mem id's per system

options SHMMAX="2097152" # max shared memory segment size (bytes)

options SHMALL=4096 # max amount of shared memory (pages)

от Brenden Phillips

Если у вас более новая версия (DU64), то вы можете использовать вместо этого sysconfig. Чтобы посмотреть текущие установки IPC, запустите

# sysconfig -q ipc

Чтобы поменять их, создайте файл ipc.stanza с таким содержимым:

ipc:

shm-seg = 16

shm-mni = 32

shm-max = 2097152

shm-all = 4096

потом запустите

# sysconfigdb -a -f ipc.stanza

Необходимо перегрузиться, чтобы изменения возымели эффект.

Linux

При моем ограниченном взляде на Linux, я не вижу другого пути изменить параметры очереди сообщений кроме как поправить заголовочный файл и пересобрать ядро. В моей системе этот файл называется /usr/src/linux/include/asm-i386/shmparam.h

Выглядит неплохо, вы можете изменить значение SHMMAX записав его в файл /proc/sys/kernel/shmmax.

Stefan Köpsell сообщает, что если ваше ядро скомпилировано с поддержкой sysctl, то вы можете изменить следующие значения:

  • kernel.shmall

  • kernel.shmmni

  • kernel.shmmax

Solaris

Обратитесь к Shared memory uncovered от Sunworld Magazine.

Чтобы установить значения, поместите в файл /etc/system следующие строки:

set shmsys:shminfo_shmmax=2097152

set shmsys:shminfo_shmmni=32

set shmsys:shminfo_shmseg=16

22.8 Иногда распределенная память и очереди сообщений не освобождаются, когда Squid завершает работу.

Да, иногда возникает такая проблемка. Выглядит как будто операционная система запутывается и не всегда освобождает ресурсы распередленной памячти и очереди сообщений, когда поцесс завершает работу, особенно если они ненормально завершаются. Чтобы исправить ситуацию, вы можете вручную освобождать ресурсы командой ipcs. Добавьте следующую команду в вашRunCache или squid_start скрипт:

ipcs | grep '^[mq]' | awk '{printf "ipcrm -%s %s\n", $1, $2}' | /bin/sh

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