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

21.5 Сервера идентификации

Для Windows NTWindows 95/98, и Unix.

22. Diskd

22.1 Что такое diskd?

DISKD относится к некоторым доп. возможностям Squid-2.4 для улучшения выполнения операций чтения/записи на диск. Основаная идея - каждая cache_dir имеет собственный обслуживающий дочерний процесс diskd. Процесс diskd выполняет все дисковые операции ввода/вывода (open, close, read, write, unlink) для cache_dir. Очереди сообщений используются для отправки запросов и ответов между Squid и процесами diskd. Распределенная память используется для хранения частей данных, которые будут прочитаны и записаны.

22.2 Это работает лучше ?

Да. Мы тестировали Squid-2.4 с DISKD на Second IRCache Bake-Off. Результаты также описаны здесь. На bakeoff мы получили 160 запросов/сек с diskd. Без diskd мы получили бы около 40 запросов/сек.

22.3 Как мне использовать это?

Вам необходисо запустить Squid версии 2.4 или более поздней. Ваша ОС должна поддерживать очереди сообщений и распределение памяти.

Чтобы отконфигурить Squid для работы с DISKD, используйте опцию --enable-storeio:

% ./configure --enable-storeio=diskd,ufs

22.4 FATAL: Unknown cache_dir type 'diskd'

Вы не указали diskd в списке модулей storeio modules как описано выше. Вам необходимо запустить configure и перекомпилировать Squid.

22.5 If I use DISKD, do I have to wipe out my current cache?

Нет. Diskd использует туже схему хранения что и стандартная "UFS". Он только изменяет выполнение операций ввода/вывода.

22.6 Как мне настроить очереди сообщений?

Большинство ОС Unix поддерживают очередь сообщений по умолчанию. Один из путей проверить - это посмотреть, есть ли у вас команда ipcs.

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

MSGMNB

Макс. количество байт на очередь сообщений.

MSGMNI

Макс. количество идентификаторов очереди сообщений (system wide).

MSGSEG

Макс. количество сегментов сообщений на очередь.

MSGSSZ

Размер сегмента сообщения.

MSGTQL

Макс. количество сообщений (system wide).

MSGMAX

Макс. размер целого сообщения. На некоторых системах вам возможно понадобится увелечить этот лимит. На других системах вы возможно не сможете изменить его.

Сообщения между Squid и diskd имеют длину в 32 байта для 32-разрядных CPU и 40 байт для 64-разрядных. Поэтому MSGSSZ должно быть равно 32 или более. Вы можете присвоить большое значение, только будте осторожны.

Мы будем иметь две очереди для каждой cache_dir -- одну на каждое направление. Т.е. MSGMNI должно быть в 2 раза больше кол-ва cache_dir's.

Мной обнаружено, что 75 сообщений на очередь есть предел нормального функционирования. Если каждое сообщение diskd состоит только из одного сегмента (зависит от зачения MSGSSZ), то MSGSEG должно быть больше 75.

MSGMNB и MSGTQL отвечают за количество сообщений, находящихся в очереди в одно время. Сообщения Diskd не могут быть больше 40 байт, но позволятеся безопасно использовать 64 байта. MSGMNB должно быть не меньше 64*75. Я рекомендую округлять до ближайшего большего из двух или использовать 8192.

MSGTQL должно быть не менее чем 75 раз больше количества cache_dir, которое вы имете.

FreeBSD

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

options SYSVMSG

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

options MSGMNB=8192 # max # of bytes in a queue

options MSGMNI=40 # number of message queue identifiers

options MSGSEG=512 # number of message segments per queue

options MSGSSZ=64 # size of a message segment

options MSGTQL=2048 # max messages in system

Digital Unix

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

options MSGMNB="8192" # max # bytes on queue

options MSGMNI="40" # # of message queue identifiers

options MSGMAX="2048" # max message size

options MSGTQL="2048" # # of system message headers

от Brenden Phillips

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

# sysconfig -q ipc

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

ipc:

msg-max = 2048

msg-mni = 40

msg-tql = 2048

msg-mnb = 8192

после чего сделайте

# sysconfigdb -a -f ipc.stanza

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

Linux

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

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

  • kernel.msgmnb

  • kernel.msgmni

  • kernel.msgmax

Solaris

Обратитесь к Demangling Message Queues от Sunworld Magazine.

Не думаю, что указаная выше статья действительно расскажет вам как установить необходимые параметры. Дополните /etc/system такими строками:

set msgsys:msginfo_msgmax=2048

set msgsys:msginfo_msgmnb=8192

set msgsys:msginfo_msgmni=40

set msgsys:msginfo_msgssz=64

set msgsys:msginfo_msgtql=2048

Конечно, необходимо перегрузиться после того как отредактирован /etc/system, перед тем как изменения вступят в силу.

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