LINUX.ORG.RU
ФорумAdmin

Squid + SMP + Shared memory cache

 , , ,


0

3

Добрый день!

Помогите, пожалуйста, разобраться, как работает механизм «Shared memory cache» в связке c технологией SMP. Дело в том, что при настройки SMP столкнулся c Очень не приятным ограничением: Currently, entities exceeding 32KB in size cannot be shared. http://www.squid-cache.org/Doc/config/memory_cache_shared/ Если «maximum_object_size» указать больше 32KB в логах появляется следующее сообщение: WARNING: disk-cache maximum object size is too large for mem-cache: 102400.00 KB > 32.00 KB

Поиск показал, что это пока конструктивная особенность SMP:

http://www.squid-cache.org/mail-archive/squid-users/201110/0354.html

http://www.squid-cache.org/mail-archive/squid-dev/201207/0184.html

Интересуют вопросы такого рода: Как отразится на пользователях и на работу Squid, отключение «memory_cache_shared off». Что будет с объектами превышающими 32KB с включенной «Shared memory cache» но с «maximum_object_size» больше чем 32KB.

ОС: CentOS 6.3 x86_64

Squid Cache: Version 3.2.9

configure options: '--build=x86_64-unknown-linux-gnu' '--host=x86_64-unknown-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--libexecdir=/usr/lib64/squid' '--localstatedir=/var' '--datadir=/usr/share/squid' '--sysconfdir=/etc/squid' '--with-logdir=$(localstatedir)/log/squid' '--with-pidfile=$(localstatedir)/run/squid.pid' '--disable-dependency-tracking' '--enable-arp-acl' '--enable-follow-x-forwarded-for' '--enable-auth' '--enable-auth-basic=DB,LDAP,MSNT,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB,getpwnam' '--enable-auth-ntlm=smb_lm,fake' '--enable-auth-digest=file,LDAP,eDirectory' '--enable-auth-negotiate=kerberos' '--enable-external-acl-helpers=ip_user,ldap_group,session,unix_group,wbinfo_group' '--enable-cache-digests' '--enable-cachemgr-hostname=localhost' '--enable-delay-pools' '--enable-epoll' '--enable-icap-client' '--enable-ident-lookups' '--enable-linux-netfilter' '--enable-referer-log' '--enable-removal-policies=heap,lru' '--enable-snmp' '--enable-ssl' '--enable-storeio=aufs,diskd,ufs' '--enable-useragent-log' '--enable-wccpv2' '--enable-esi' '--with-aio' '--with-default-user=squid' '--with-filedescriptors=16384' '--with-dl' '--with-openssl' '--with-pthreads' 'build_alias=x86_64-unknown-linux-gnu' 'host_alias=x86_64-unknown-linux-gnu' 'target_alias=x86_64-redhat-linux-gnu' 'CFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fpie' 'CXXFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fpie' 'PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/share/pkgconfig' '--enable-zph-qos' '--with-large-files' '--enable-kill-parent-hack' '--enable-async-io' '--disable-ipv6' '--enable-htcp' '--enable-carp' --enable-ltdl-convenience

А зачем вам все это выяснять, из интереса или есть какая-то реальная проблема?

zgen ★★★★★ ()
Ответ на: комментарий от Dionis80

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

Зачем настраивать squid в многопоточном режиме, для запуска на многопроцессорных серверах?

Какие-то проблемы работы со squid?

zgen ★★★★★ ()

Преждевременная оптимизация - корень всех зол. Приведите конфигурацию железа и планируемую нагрузку(кол-во пользователей и объем трафика) - отсюда лучше начать плясать...

Pinkbyte ★★★★★ ()
Ответ на: комментарий от zgen

Проблема в простое сервера (CPU,HDD) при максимальной загрузки самого Squid-а. Заметные задержки при работе через Squid, при свободных каналах.

Dionis80 ()
Ответ на: комментарий от Pinkbyte

Сервер: SUN FIRE X2270 M2

CPU: 2 X Intel(R) Xeon(R) E5620, 4 Core

ОЗУ: 6 X 4Gb 24576MB (Планируется довести до 96 GB)

Диски: HITACHI H7210CA30 / 4 X 1000GB (Планируется добавить SSD для быстрого Кеша если конечно Squid позволит такое воплотить)

Количество пользователей: > 10 000

Dionis80 ()
Ответ на: комментарий от Dionis80

У меня объемы поменьше, мне моих ресурсов(~700 человек, трафик ~300Mbit/s) на i7 хватает без такого тюнинга. Единственное что - увеличил кол-во дескрипторов через limits.conf

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

Да я тоже так понял, что это единственный ограничитель со стороны системы, который необходимо настроить в конфигурационных файлах ОС. Все остальные ресурсы сервера Squid задействует в соответствии со своим конфигурационным файлом, либо, забирает, сколько сможет без ограничения со стороны ОС.

Dionis80 ()

Продолжая изучать оригинальный сайт squid-cache.org склоняюсь к выводу, что при отключении «maximum_object_size» у процессов, по сути, останется общим только:

http://wiki.squid-cache.org/Features/SmpScale

• Squid executable,

• general configuration,

• listening ports,

• logs,

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

Например: В случае, если при первом подключении клиент подключится через первый процесс, а при втором через второй процесс, и запросит одну и туже информацию, данные будут скачены из интернета ДВАЖДЫ и ПРОДУБЛИРОВАНЫ в обоих кэшах.

Интересно как в таком случае будет поделена оперативная память. Например если в конфиге указать: cache_mem 4096 MB То каждому процессу будет выделено 4096 MB либо данный объём будет поделен поровну на количество процессов SMP.

Почему-то на оригинальном сайте не могу найти подробного описания Shared memory cache и SMP. Возможно ищу плохо )

Dionis80 ()

Исходя из вышесказанного, возникает вопрос, не будет ли эффективней распараллелить процессы с помощью CARP:

http://wiki.squid-cache.org/ConfigExamples/MultiCpuSystem

Если у кого-то есть опыт может подскажет, как выглядит схема взаимодействия между frontend и backend серверами в таком случае?

Особенно интересуют такие вопросы:

Будет ли дублирование информации в кэшах backend-ов?

Возможно, ли в такой связки настроить работу ВСЕХ серверов в режиме TPROXY?

Dionis80 ()
Ответ на: комментарий от Dionis80

ВСЕХ серверов в режиме TPROXY?

Зачем? Там только frontend нужно в прозрачный режим заводить. Он должен принимать все запросы и раскидывать их.

Будет ли дублирование информации в кэшах backend-ов?

Дожно получаться как и с SMP, т.е. нет.

дисковый кэш у них будут собственные

О дисковом кеше там есть оговорка об Rock Store

Kuzz ★★★ ()
Ответ на: комментарий от Kuzz

Спасибо большое за идею! Очень интересное предложение! Правда, если не удастся запретить повторное кеширование информации, найденной по icp, это не спасет от дублирования, но тогда хоть уменьшит количество обращений в интернет. Обязательно попробую!

Как я понял у Rock Store такое же ограничение на величину объекта в 32KB.

Dionis80 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.