оптимизация производительности squid. Оптимизация squid


Yellow Leaf - Статьи - Оптимизация кэша squid

Развивая тему экономии трафика с помощью прокси-сервера squid нельзя не упомянуть про возможности дополнительной настройки кэша, а так же возможность задания правил кэширования для разных адресов (которые можно задавать шаблонами).

Все описанные здесь изменения делаются в файле squid.conf, который в большинстве дистрибутивов расположен в /etc/squid/

Сначала вспомним про очень полезную опцию: reload_into_ims. По умолчанию она выключена. Если ещё включить, то вместо reload squid будет посылать запрос If-Modified-Since. Это нарушение стандарта HTTP, однако большинство серверов корректно обрабатывают этот запрос, потому включаем:

reload_into_ims on

Далее находим параметр refresh_pattern. Он задаёт параметры кэширования. Стандартно шаблоны выглядят так:

refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320

Обычно используется эта инструкция так:

refresh_pattern regex min percent max options

Опции означают следующее:

ОпцияЗначение
regex Регулярное выражение. Описывает адреса, к которым применимо это правило.
min Минимальное время, в течении которого объект в кэше считается новым. Рекомендуется использовать 0, чтобы корректно отображались динамические страницы.
percent Процент от возраста объекта с явным указание срока актуальности, в течении которого объект считается новым.
max Указывает верхний предел времени, в течении которого объекты без явного указания времени актуальности считаются новыми.
options Дополнительные опции, перечисляемые через пробел. Самые интересные из них:
  • override-expire: заставляет игнорировать факт истечения времени актуальности объекта.
  • override-lastmod: заставляет игнорировать переданное сервером время последней модификации объекта.
  • ignore-reload: заставляет игнорировать запрос reload от клиента и выдавать версию объекта из кэша.
  • ignore-no-cache: заставляет игнорировать заголовок no-cache с сервера и принудительно кэшировать объект.

Правила обрабатываются сверху вниз до первого сработавшего правила. Потому правило для "." должно идти последним.

Пишем правила. Для начала закомментируем имеющиеся правила. Вместо них мы будем писать свои:

#refresh_pattern ^ftp: 1440 20% 10080 #refresh_pattern ^gopher: 1440 0% 1440 #refresh_pattern . 0 20% 4320

Далее настроим более жёсткое кэширование для определённых типов файлов:

refresh_pattern \.bz2$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern \.exe$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern \.gif$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern \.gz$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern \.ico$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern \.jpg$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern \.mid$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern \.mp3$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern \.pdf$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern \.swf$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern \.tar$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern \.tgz$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern \.zip$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache

Уже это даёт солидную экономию. Далее на очереди реклама. Конечно её можно вырезать с помощью bfilter и/или adzapper, но ни один фильтр не может убрать всей рекламы, потому на всякий случай добавим правила для кэширования рекламы:

refresh_pattern http://ad\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern http://ads\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern http://adv\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern http://click\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern http://count\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern http://counter\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern http://engine\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern http://img\.readme\.ru 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern http://userpic\.livejournal\.com 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern \.ru/bf-analyze 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern \.ru/bf-si 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern /advs/ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern /banners/ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache refresh_pattern /cgi-bin/iframe/ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache

Далее полезно ещё раз изучить логи squid. Возможно вы напишите какие-то свои дополнительные правила.

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

refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 80% 14400

При наличии достаточного количества места на сервере так же имеет смысл увеличить размер кэша и максимальный размер объекта, попадающего в кэш.

За размер кэша отвечает параметр cache_dir:

# cache_dir ufs /var/spool/squid 100 16 256 cache_dir ufs /var/spool/squid 10240 16 256

За максимальный размер объекта в кэше отвечает параметр maximum_object_size:

# maximum_object_size 4096 KB maximum_object_size 10240 KB

Закончив изменения сохраняем файл и даём команду squid перечитать настройки:

squid -k reconfigure

На этом всё. Если вы используете sarg для анализа логов squid то вы наверняка заметите рост эффективности кэша. (У автора использование кэша увеличилось с 6% до 28%)

Ссылки:

www.ylsoftware.com

Как правильно оптимизировать Squid 3 для повышения производительности? — Toster.ru

Добрый день! Прошу помочь в оптимизации squid для ускорения доступа к интернету. Имеется канал доступа к сети интернет со средними пропускными характеристиками и, примерно, 300 пользователей. Сервер, на котором располагается прокси имеет 8Gb ОЗУ, RAID-5, гигабитные сетевые адаптеры. Использовать его планирую только для раздачи инета. Версия squid - 3.4.8

Небольшой дисковый кэш мне нужен (гигов примерно на 20)

Вот такой конфиг у меня получился:(привожу только важные настройки), регулярок у меня пока нет, только стандартные, пока важно добиться максимальной производительности

# Настройки использования памятиmemory_pools onmemory_pools_limit 0

# Настройки кэша в ОЗУcache_mem 6024 MBmaximum_object_size_in_memory 512 KBmemory_replacement_policy lru

# Настройки дискового кэшаcache_replacement_policy heap LFUDAcache_dir ufs /var/cache/squid 20000 48 256maximum_object_size 20024 KBminimum_object_size 0.5 KB

# Автоматическая докачка небольших файловrange_offset_limit 1024 KB

# Кэширование IP-адресовipcache_size 8192

# Настройка логовcache_store_log noneclient_db off

# Закрывать наполовину закрытые соединенияhalf_closed_clients off

# Жесткое кэширование для некоторых статичных типов файловrefresh_pattern -i \.bz2$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.exe$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.gif$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.gz$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.ico$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.jpg$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.mid$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.mp3$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.mp4$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.pdf$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.swf$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.svg$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.tar$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.tgz$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.zip$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.rar$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.msi$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern -i \.png$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache

# Основные параметры кэшированияrefresh_pattern ^ftp: 1440 20% 10080refresh_pattern ^gopher: 1440 0% 1440refresh_pattern -i (/cgi-bin/|\?) 0 0% 0refresh_pattern . 0 20% 4320

Не привожу остальные настройки, например, настройки пулов, так как это пока не важно

Вот какой я наметил план для себя:1) максимальное использование ОЗУ2) кэш на диске для хранения более крупных файлов - инсталяшки, картинки и.т.д3) в ОЗУ хранить мелкие и часто встречающиеся файлы

Первая засада:первоначально использовал параметрminimum_object_size 1024 KB - с таким расчетом, что к дисковый кэш будут попадать только файлы больше или равно этого размера. В результате в логах только TCP_MISS - объекты не найдены в кэше. Убрал.

Вторая:сейчас вероятность попадания в кэш достаточно низкая 1-2% от дневного трафика

Третья:не все файлы, даже удовлетворяющие условиям, попадают в кэш. Например пробую скачать отсюда файл pdf (5 Мб) www.niva-club.net/downloads.php?view=detail&df_id=19. Он не кэшируется ни в какую.

Четвертая:отдача интернета идет как-то не так, некоторые страницы долго не докачиваются до конца, браузер может 3-5 сек не открывать страницу и.т.д

В общем, чуствую, что где то я сильно не прав в настройках. Может кто чего подскажет.

Да, чуть не забыл: после проб и ошибок memory_replacement_policy оставил lru, так как с ним процент попадания в кэш все же выше

В логах преобладаютTCP_MISS/200TCP_MISS/302

и редко TCP_MEM_HIT/200

Спасибо всем

toster.ru

Оптимизация squid

Оптимизация squid

Продолжаем править и допиливать то что начали.Немного поправил изначальный конфиг.Добавил отдельно список блокировки доступа социальным сетям.Правим тот же конфиг https://imbicile.pp.ru/konfiguraciya-squid3/

......... ......... # Время принудительного выключения ################################################################################################### shutdown_lifetime 5 seconds # Отменяет прерваных закачек ################################################################################################### quick_abort_min 0 KB quick_abort_max 0 KB # Выключаем ICP лог ################################################################################################### log_icp_queries off ......... ......... # Использование кэша ################################################################################################### cache_dir ufs /var/squid/cache 8192 16 256 ......... ......... # Добавляем cписок соц сетей пользователям ################################################################################################### acl soclist url_regex -i "/home/proxy/lists/soc.acl" ......... ......... http_access allow !blacklist !soclist AD_auth ......... .........

Необходимо очистить кэш squid и переформировать его по новой

sudo -s service squid3 stop cd ~/cache/ rm -Rf * squid3 -z service squid3 start

сам список soc.acl

./ok.ru ./vk.com .facebook.com .odnoklassniki.ru .plus.google.com .rc-mir.com .habrahabr.ru .instagram.com .newsland.com .foursquare.com .nsportal.ru .drive2.ru .russia.ru .rustoria.ru .gamer.ru .kroogi.com .sprashivai.ru .myband.info .likestar.tv .lastfm.ru .fishingspace.com .moveout.in .elitsy.ru .pobedam.ru .bookmix.ru .muloqot.uz .mover.uz .youface.uz .vsetut.uz .esosedi.ru .netropolitan.info .xing.com .otzovik.com .zakon.ru .stranamam.ru .animal.ru .turmir.com .delovoymir.biz .familyspace.ru .fish-hook.ru .svitmam.ua .vseti.by .poembook.ru .pet2you.com .ccdi.ru .myrapgame.ru .facepoint.ru .scipeople.ru .webtransfer-finance.com .science-community.org .bikepost.ru .minibanda.ru .crazymama.ru .online-clubs.com .metodisty.ru .gamexp.ru .polonsil.ru .napodiume.ru .sportparad.ru .autopeople.ru .fgids.com .classnet.ru .gallerix.ru .cafemam.ru .yapiligrim.ru .drugmetal.ru .yousmi.by .rusbody.com .investor.ru .muzkontakt.ru .ruspace.ru .vgorode.ru .megamixgroup.com .prosto-foto.ru .turometr.ru .i-think.ru .zabarankoi.ru .photogeek.ru .derevnyaonline.ru .starichki.ru .rusfan.ru .viadeo.com .professionali.ru .dudu.com .maam.ru .dissp.com .navidu.com .povarenok.ru .fotokto.ru .cyclowiki.org .podruzhki.ru .nacheku.ru .druzhu.com .neizvestniy-geniy.ru .stihi.ru .chitalnya.ru .privet.ru .2x2tv.ru .moikrug.ru .linkedin.com .butik2.ru .nekto.me .me2day.net .mylove.ru .fotostrana.ru .monamour.ru .love.mail.ru .twoo.com .love.ru .beesona.ru .geoid.ru .liveinternet.ru .dnevnik.ru .kanobu.ru .twitter.com .drug.uz .mylivepage.ru .mirtesen.ru .odnodolshiki.ru .klerk.ru .vdolg.ru .pomnipro.ru .babyblog.ru .e1.ru/talk/forum/ .eka-mama.ru .in-galaxy.com .dirty.ru .fion.ru .revision.ru .qip.ru .unface.me .livelib.ru .e-xecutive.ru .x-libris.net .cheloveche.ru .my-lib.ru .dogster.ru .rusedu.net .my.ya.ru .vkrugudruzei.ru .blog.ru .drugme.ru .habrahabr.ru .nirvana.fm .venividi.ru .my.mail.ru .limpa.ru .moikrug.ru .vashisosedi.ru .sosedi.ru .hh.ru .drom.ru .portalplaneta.ru .ikra.tv .flamp.ru .gamemag.ru .tourout.ru .spurtup.com .news2.ru

Facebook

Twitter

Мой мир

Вконтакте

Одноклассники

Google+

imbicile.pp.ru

Настройка Squid для начинающих | Блог Линуксоида

Содержание статьи

Вступление

Многие администраторы сталкиваются с проблемой разумного использования времени и канала для выхода в сеть Интернет, задумываются о возможности экономии времени и денег, об ограничении скорости для отдельных видов файлов или личностей, в конце концов об экономии всего, что связано с теми или иными аспектами выхода в глобальную сеть. Я, с помощью этой статьи, попытаюсь наглядно и доходчиво объяснить о настройках самого распространенного прокси сервера — прокси сервера Squid.

Начальные настройки squid для доступа пользователей

Мы не будем вдаваться в процесс установки прокси сервера Squid, а перейдем сразу к его настройке. Самое элементарное, что нам после установки следует сделать, так это разрешить доступ пользователям нашей локальной сети. Для этого служат параметры http_port, http_access. Кроме этого, мы заведем acl (список контроля доступа) для нашей локальной сети.

И так, http_port нам нужен постольку, поскольку наш прокси сервер Squid должен обслуживать только компьютеры нашей локальной сети и быть невидимым для внешнего мира, дабы исключить возможность «плохим людям» внешней сети воспользоваться нашим каналом или трафиком, а в случае, если будут обнаружены «дыры» в коде прокси сервера Squid, воспользоваться ими.

Параметр http_access используется для разрешения или запрещения доступа к определенным ресурсам, определенным адресам либо с определенных адресов, к определенным сайтам, по определенным протоколам, портам и всему тому, что непосредственно указано с помощью Acl (списков контроля доступа).

Таблица N 1. Некоторые подсети.|Диапазон адресов |Полная форма |Краткая форма192.168.0.1-192.168.0.254 192.168.0.0/255.255.255.0 192.168.0.0/24192.168.20.1-192.168.20.254 192.168.20.0/255.255.255.0 192.168.20.0/24192.168.0.1-192.168.254.254 192.168.20.0/255.255.0.0 192.168.20.0/1610.0.0.1-10.254.254.254 10.0.0.0/255.0.0.0 10.0.0.0/8

Предположим, что у Вас сеть с адресами от 192.168.0.1 до 192.168.0.254, тогда добавим новый Acl (см. таблицу N1):acl LocalNet src 192.168.0.0/24

Предположим, что у Вас прокси сервер Squid расположен по адресу 192.168.0.200 на порту 3128, тогда пишем в файле конфигурации:http_port 192.168.0.200:3128

Следующим нашим действием будет запрет использования нашего прокси сервера, кроме как пользователями нашей локальной сети:http_access allow LocalNethttp_access deny all

В данном случае слово allow является разрешением, а слово deny запрещением, то есть мы разрешаем доступ к прокси серверу Squid с адресов нашей локальной сети и запрещаем доступ всем остальным. Будьте внимательны, указывая http_access, так как Squid использует их в порядке указания Вами.

Изучаем acl (списки контроля доступа)

Система управления доступом в прокси сервере Squid является очень гибкой и обширной. Она состоит из элементов со значениями и списков доступа c указанием allow (разрешение) или deny (запрещение).

Формат Acl следующий:acl имя элемент список

Формат списка доступа:http_access указание имя_acl

Мы рассмотрим некоторые элементы, которые позволяет использовать прокси сервер Squid, конечно же с примерами:

* acl имя src список

С помощью этого элемента (src) мы указываем IP-адрес источника, то есть клиента от которого пришел запрос к нашему прокси серверу. В следующем примере мы разрешим Васе Пупкину (Pupkin) и отделу программирования (Progs) доступ к нашему прокси серверу, а всем остальным запретим:acl Progs src 192.168.0.1-192.168.0.9acl Pupkin src 192.168.0.10http_access allow Progshttp_access allow Pupkinhttp_access deny all

* acl имя dst список

Данный элемент (dst) указывает IP-адрес назначения, то есть IP-адрес того сервера, доступ к которому желает получить клиент прокси сервера. В следующем примере мы запретим Васе доступ к подсети 194.67.0.0/16 (к примеру, в ней находится тот же aport.ru):acl Net194 dst 194.67.0.0/16http_access deny Pupkin Net194

* acl имя dstdomain список

С помощью этого элемента (dstdomain) мы указываем домен, доступ к которому желает получить клиент прокси сервера. В следующем примере мы запретим Васе доступ к варезным сайтам nnm.ru и kpnemo.ru:acl SitesWarez dstdomain .nnm.ru .kpnemo.ruhttp_access deny Pupkin SitesWarez

В случае, если будет необходимо указать домен источника, то используйте srcdomain.

* acl имя [-i] srcdom_regex список* acl имя [-i] dstdom_regex список

Данные элементы отличаются от srcdomain и dstdomain лишь тем, что в них используются регулярные выражения, которые в данной статье мы не рассматриваем, но пример всё-таки приведём:Acl SitesRegexSex dstdom_regex sexAcl SitesRegexComNet dstdom_regex \.com$ \.net$http_access deny Pupkin SitesRegexSexhttp_access deny Pupkin SitesRegexComNet

В данном примере мы запретили доступ Пупкину Василию на все домены, содержащие слово sex и на все домены в зонах .com и .net. Ключ -i призван игнорировать регистр символов в регулярных выражениях.

* acl имя [-i] url_regex список

С помощью этого элемента (url_regex) мы указываем шаблон регулярного выражения для URL. Пример указания файлов с расширением avi, начинающихся на слово sex:acl NoAviFromSex url_regex -i sex.*\.avi$

В случае, если Вы желаете указать шаблон только для пути URL, то есть исключая протокол и имя хоста (домена), то используйте urlpath_regex. Пример для указания музыкальных файлов:acl media urlpath_regex -i \.mp3$ \.asf$ \.wma$

* acl имя_acl port список

Указание номера порта назначения, то есть порта, к которому желает подключится клиент нашего прокси сервера. Как пример, запретим всем использование программы Mirc через наш прокси сервер:Acl Mirc port 6667-6669 7770-7776http_access deny all Mirc

* acl имя_acl proto список

Указание протокола передачи. Как пример, запретим вышеупомянутому Васе использование протокола FTP через наш прокси сервер:acl ftpproto proto ftphttp_access deny Pupkin ftpproto

* acl имя_acl method список

Указание метода http запроса клиентом (GET, POST). Возьмем ситуацию, когда следует запретить Васе Пупкину просматривать его почту на сайте mail.ru, но при этом разрешить прогуливаться по сайту без запретов, то есть запретить Васе возможность войти в свой почтовый ящик через форму входа на сайте:acl SiteMailRu dstdomain .mail.ruacl methodpost method POSThttp_access deny Pupkin methodpost SiteMailRu

Ограничения пользователей

Достаточно часто в нашей стране возникает ситуация, что канала доступа в глобальную сеть Интернет на всех пользователей не хватает и возникает желание дать каждому по максимуму, но при этом не дать каналу «загнуться» из-за любителей позагружать файлы. Средства прокси-сервера Squid позволяют этого добится несколькими путями:- первый путь это оптимизация кеширования объектов;

- второй - это ограничение по времени определенных пользователей, что несовсем корректно;

- третий путь заключается в ограничении скорости для определенных типовфайлов, пользователей и всего того, что определено нами через Acl.

Ограничения по времени

Ограничить пользователей по времени можно следующим образом: acl имя time дни чч:мм-ЧЧ:ММ

Где день: M — Понедельник, T — Вторник, W — Среда, H — Четверг, F — Пятница, A — Суббота, S — Воскресенье.

При этом чч:мм должно быть меньше чем ЧЧ:ММ, то есть можно указать с 00:00-23:59, но нельзя указать 20:00-09:00.

Давайте запретим всё тому же Васе иметь доступ в сеть Интернет с 10 до 15 часов каждый день:acl TimePupkin time 10:00-15:00http_access deny Pupkin TimePupkin

Если хочется разрешить Васе пользоваться программой Mirc с 13 до 14 часов, то пишем:acl TimePupkin time 13:00-14:00http_access allow Pupkin TimePupkin Mirchttp_access deny Pupkin Mirc

А что делать, если необходимо запретить или разрешить в определенные дни недели? Squid также позволяет это сделать, к примеру с 13 до 14 в понедельник и в воскресенье:acl TimePupkin time MS 13:00-14:00

Как видите, ничего сложного в этом нет.

Ограничения по скорости

Регулировка скорости в прокси сервере Squid осуществляется с помощью пулов. Пул — это своего рода бочонок с пивом, в который пиво постоянно заливают до краёв, а клиенты наливают в свои стаканы или иные ёмкости для дальнейшего внутреннего потребления по мере надобности через свои персональные краны.

Пулы регулируются с помощью трех параметров: delay_class, delay_parameters, delay_access. Количество пулов указывается с помощью параметра delay_pools.

Пулы могут быть трёх классов:1. Весь поток пива ограничен одним краном (на всю сеть).

2. Весь поток пива ограничен одним краном, но при этом кран делится на подкранчики (на каждый IP).3. Весь поток пива ограничен одним краном, но кран делится на подкранчики (на подсети), которые также делятся на мини кранчики (на каждый IP).

Форматы:delay_pools количество_объявленных_пуловdelay_access номер_пула действие имя_acl

действие может быть allow (разрешить) и deny (запретить). При этом, данный пул действует на тех, кому он разрешен и не действует на тех, кому он запрещен. В случае, если указано allow all, а затем deny Pupkin, то на Пупкина данный класс всё-равно подействует, т.к. IP-адрес Пупкина объявленный в acl Pupkin, входит в список адресов acl all. Имейте это ввиду.delay_class номер_пула класс_пулаdelay_parameters номер_пула параметры

параметры отличаются в зависимости от класса пула:

для первого класса:delay_parameters 1 байт_на_всю_сеть

для второго класса:delay_parameters 1 на_всю_сеть на_клиента

для третьего класса:delay_parameters 1 на_всю_сеть на_подсеть на_клиента

Для примера, у нас канал на 128 Кбит (в среднем 15 Кбайт в секунду) и мы желаем Васе (Pupkin) дать всего 4 Кбайта/сек (на все про всё один маленький бокальчик), отделу программирования (Prog) дать всего 10 Кбайт/сек и на каждого всего по 5 Кб/сек (всего два бокальчика), всех остальных ограничить в 2 Кбайта/сек на каждого и 10 Кб/сек на всех, афайлы mp3 (media) ограничить в 3 Кбайта в секунду на всех (на всю бочку пива такой маленький кран). Тогда пишем:acl Prog src 192.168.0.1-192.168.0.9acl Pupkin src 192.168.0.10acl LocalNet src 192.168.0.0/255.255.255.0acl media urlpath_regex -i \.mp3$ \.asf$ \.wma$delay_pools 4# сначала ограничим mp3delay_class 1 1delay_parameters 1 3000/3000delay_access 1 allow mediadelay_access 1 deny all# ограничим бедного Васюdelay_class 2 1delay_parameters 2 4000/4000delay_access 2 allow Pupkindelay_access 2 deny all# ограничим отдел программированияdelay_class 3 2delay_parameters 3 10000/10000 5000/5000delay_access 3 allow Progdelay_access 3 deny all# а теперь ограничим остальных (второй класс пула)delay_class 4 2delay_parameters 4 10000/10000 2000/2000delay_access 4 deny mediadelay_access 4 deny Pupkindelay_access 4 deny Progdelay_access 4 allow LocalNetdelay_access 4 deny all

Часто возникает вопрос, а как лучше всего использовать столь малый канал, чтобы он автоматически делился между всеми теми, кто в данный момент что-либо загружает? На этот вопрос имеется однозначный ответ — средствами прокси сервера Squid этого сделать не возможно, но всё-таки кое-что предпринять можно:

delay_class 1 2delay_parameters 1 -1/-1 5000/15000delay_access 1 allow LocalNetdelay_access 1 deny all

Таким образом мы выделяем на всю нашу сеть и на подсети максимальный канал (-1 означает неограниченность), а каждому пользователю даем скорость максимум в 5 Кб/сек после того, как он скачает на максимальной скорости первые 15 Кбайт документа. Таким образом клиент не съест весь канал, но достаточно быстро получит первые 15 Кбайт.

Оптимизируем кеширование объектов в squid

Существует множество типов файлов, которые обновляются не достаточно часто, чтобы позволить прокси серверу реагировать на заголовки от вебсерверов о том, что данный объект не подлежит кешированию либо он был на удивление только что изменён. Это довольно частая ситуация. Для разрешения таких ситуаций призван параметр refresh_pattern в файленастроек прокси-сервера Squid, но полностью с формулами и т.п. мы его рассматривать не будем.

Формат:refresh_pattern [-i] строка МИНВ процент МАКСВ параметры

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

МИНВ (минимальное время) — время в минутах, когда объект, имеющийся в кеше считается свежим.

МАКСВ (максимальное время) — максимальное время в минутах, когда объект считается свежим.

Параметры — это один или несколько следующих параметров:- override-expire - игнорировать информацию об истечении свежести объекта и использовать МИНВ.

- override-lastmod - игнорировать информацию о дате изменения файла и использовать МИНВ.

- reload-into-ims - вместо запроса клиентского запроса "не кешировать документы" (no-cache) посылать запрос "Если изменен с" (If-Modified-Since)

- ignore-reload - игнорировать запросы клиентов "не кешировать документы" (no-cache) или "перезагрузить документ" (reload).

И так, мы подошли к самом главному. Ну, так какие же типы файлов реже всех обновляются? Как правило, это разнообразные музыкальные файлы и картинки. Установим свежесть объектов, для этого для картинок и музыкальных файлов укажем, скажем так для примера, целых 30 дней (43200 минут):refresh_pattern -i \.gif$ 43200 100% 43200 override-lastmod override-expirerefresh_pattern -i \.png$ 43200 100% 43200 override-lastmod override-expirerefresh_pattern -i \.jpg$ 43200 100% 43200 override-lastmod override-expirerefresh_pattern -i \.jpeg$ 43200 100% 43200 override-lastmod override-expirerefresh_pattern -i \.pdf$ 43200 100% 43200 override-lastmod override-expirerefresh_pattern -i \.zip$ 43200 100% 43200 override-lastmod override-expirerefresh_pattern -i \.tar$ 43200 100% 43200 override-lastmod override-expirerefresh_pattern -i \.gz$ 43200 100% 43200 override-lastmod override-expirerefresh_pattern -i \.tgz$ 43200 100% 43200 override-lastmod override-expirerefresh_pattern -i \.exe$ 43200 100% 43200 override-lastmod override-expirerefresh_pattern -i \.prz$ 43200 100% 43200 override-lastmod override-expirerefresh_pattern -i \.ppt$ 43200 100% 43200 override-lastmod override-expirerefresh_pattern -i \.inf$ 43200 100% 43200 override-lastmod override-expirerefresh_pattern -i \.swf$ 43200 100% 43200 override-lastmod override-expirerefresh_pattern -i \.mid$ 43200 100% 43200 override-lastmod override-expirerefresh_pattern -i \.wav$ 43200 100% 43200 override-lastmod override-expirerefresh_pattern -i \.mp3$ 43200 100% 43200 override-lastmod override-expire

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

Заключение

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

Взято тут

www.linux16.ru

Squid — Пингвиньи радости

Материал из Пингвиньи радостей

Статья о прокси-сервере Squid

Squid это программа создающая кэширующий HTTP прокси-сервер.

Squid обеспечивает например

Замечание: В Debian Squeeze Squid присутствовал в двух версиях 2.7 и 3.1, где Squid3 это версия переписанная на C++ с дополнительными возможностями. Отличия Squid3 от прежнего Squid приведены в статье Такой разный Squid. Начиная с Debian Jessie поддерживается только только версия 3+. Учитывайте, что актуализация статьи производится для последних версий Squid

Установка

Пакет присутствует в хранилище пакетов debian. Для установки пакета

После установки пакет необходимо настроить.

Настройка осуществляется путём редактирования файла конфигурации /etc/squid/squid.conf.Описание параметров файла конфигурации содержится в статье Squid.conf.

Некоторые часто используемые команды

# /usr/sbin/squid -z - создание и обнуление структуры каталогов кэша # /etc/init.d/squid start - запуск сервера # /etc/init.d/squid restart - перезапуск сервера # /etc/init.d/squid force-reload - перезагрузка новой конфигурации сервера # squid -k reconfigure - переконфигурация сервера # squid -k rotate - "перемещение" (ротация) логов squid # squid -d 9 - запуск squid в отладочном режиме с выводом информации на экран # tail /var/log/squid/access.log - просмотр лог-файла squid Замечание: Для получения подробных графических отчётов о работе Squid, о посещённых интернет-страницах могут быть использованы Программы анализаторы log-файлов.

Ограничение доступа к интернет

Ограничение доступа в Squid может быть осуществлено

Например Для запрета доступа по IP-адресу вместо DNS-имени смотри раздел Запрет запроса цифрового IP адреса

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

В случае "невозможности доставить запрошенный url" Squid позволяет осуществить перенаправление вызова на стандартные файлы ошибок deny_info. Эти файлы могут быть отредактированы по собственному усмотрению, или вообще содержать null.gif - единственный пиксель.

Запрет доступа к кэшу

Запрет запуска файлов из кэша повышает безопасность использования прокси сервера.

Для установки запрета запуска программ из кэша

/dev/mapper/squid /var/spool/squid reiserfs defaults,noexec,nodev,nosuid 0 2 # mount /var/spool/squid/ -o remount

Для ограничения несанкционированного доступа к кэшу

# chown -R proxy:proxy /var/spool/squid/

Авторизация подключения к прокси-серверу

Доступ к прокси через авторизацию может быть необходим как минимум по двум причинам: - это повышает безопасность, за счет добавления паролей для пользователей; - и классифицирует в логе программы запрошенную информацию по пользователем, в связи с включением в access.log имени пользователя.

Для добавления авторизации пользователей при подключении к Squid

auth_param basic program /usr/lib/squid/ncsa_auth /usr/local/etc/squid/passwd auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours auth_param basic casesensitive off acl myusers proxy_auth REQUIRED http_access allow myusers http_access deny all # htpasswd -с /usr/local/etc/squid/passwd USER ключ "-с" вводится один раз - для создания файла с паролями, далее просто добавляем пользователей # htpasswd -b /usr/local/etc/squid/passwd USER PASSOWRD Adding password for user USER

Ссылки:

Создание каскада прокси

Создание каскада позволяет прокси-серверу передавать HTTP-запросы другой программе. Эта программа может быть другим прокси-сервером или программой-фильтром контента. Поддержка каскада прокси позволяет создавать Обратный прокси на squid - то есть проксировать внешние запросы к сайтам в локальной сети.

Для создания каскада прокси

cache_peer 192.168.2.1 parent 3128 0 proxy-only default где 192.168.2.1:3128 - ip-адрес/порт вышестоящего прокси-сервера

Ссылки:

Оптимизация прокси

Для увеличения частоты попаданий в кэш прокси-сервера

- в файл конфигурации добавляются например параметры cache_dir ufs /var/spool/squid 10240 16 256 увеличение размера дискового кэша maximum_object_size 10 MB увеличение размера кэшируемого объекта reload_into_ims on замена запроса reload на If-Modified-Since refresh_pattern \.jpg$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache - добавление правил частоты обновления объектов в кэше

Для повышения производительности (отзывчивости) прокси-сервера

- в файл конфигурации добавляются например параметры cache_mem 512 MB увеличение размера буфера кэша в памяти maximum_object_size_in_memory 1 MB увеличение размера кэшируемого в память объекта dns_nameservers IP_SERVER прямое указание IP адреса DNS-сервера

Ссылки:

deny_info

Squid позволяет выдать ответ клиенту на запрещённый запрос произвольным способом.

В обычном случае для этого используются директивы deny_info и указание URL вида

http_access deny banners deny_info http://ip_web_server/error.html banners где ip_web_server - адрес Веб-сервера содержавший странички с кодами ошибок Например Для обеспечения эстетичного просмотра веб-страницы при блокировании запроса может быть применено перенаправление на 1-пиксельный GIF-файл: http_access deny banners deny_info http://ip_web_server/1x1.gif banners

Но использование веб-сервера в данном случае не является обязательным.Для обеспечения перенаправления deny_info средствами самого Squid

# cp null.gif /usr/share/squid/icons/ # echo "null.gif$ image/gif null.gif - image +download +view" >> /usr/share/squid/mime.conf deny_info IP_SquidServer:PORT_SquidServer/squid-internal-static/icons/null.gif banners

Ссылки:

Блокирование HTTPS хостов

В настоящее время сайты в интернет активно используют защищённый HTTP протокол - HTTPS. Это вызывает трудности для установки ограничений доступа, как для самого Squid, так и для программ-фильтров, так как доступа к контенту странички нет. Тем не менее запрос URL попадает к прокси в открытом виде. Что позволяет осуществить его блокирование по маске запрашиваемого хоста.

Для блокирования HTTPS хостов по маске запрашиваемого хоста

- в файл конфигурации добавляются например параметры acl poorDSTDOM dstdomain -i "/etc/squid/acl/poorDSTDOM" http_access deny poorDSTDOM где файл /etc/squid/acl/poorDSTDOM содержит плохие маски запросов по домену, вида .direct.yandex.ru .content.adriver.ru .doubleclick.net .top100.rambler.ru .adservice.google.ru ...

Существуют и другие методы к блокированию SSL-запросов в Squid.Например с использованием SSL-сертификатов

Результирующие коды Squid

Результаты своей работы Squid записывает в файл журнала (обычно /var/log/squid/access.log). Для понимания выполнения прокси-сервером своей функции следует иметь представление о записываемых в лог Результирующих кодах, выставляемых SQUID-ом и о кодах состояния HTTP.

Перечень Результирующих кодов Squid

TCP_HIT верная копия запрошенного объекта была в кэше TCP_MISS запрошенного объекта не было в кэше TCP_REFRESH_HIT запрошенный объект был закэширован, но УСТАРЕЛ; IMS-запрос для этого объекта вернул "304 not modified" TCP_REF_FAIL_HIT запрошенный объект был закэширован, но УСТАРЕЛ; IMS-запрос завершен неудачно и устаревший объект был доставлен TCP_REFRESH_MISS запрошенный объект был закэширован, но УСТАРЕЛ; IMS-запрос вернул новое содержимое TCP_CLIENT_REFRESH_MISS клиент послал прагму "no-cache" или другу аналогичную команду контроля кэширования в запросе, поэтому объект.должен быть повторно получен. TCP_IMS_HIT клиент использовал IMS-запрос для объекта, который был найден в кэше свежим TCP_SWAPFAIL_MISS объект скорее всего был в кэше, но доступа к нему нет TCP_NEGATIVE_HIT запрос для негативно кэшированных объектов типа "404 not found", о которых кэш знает, что они недоступны; См. пояснения по negative_ttl в вашем файле squid.conf. TCP_MEM_HIT верная копия запрошенного объекта была в кэше и в памяти; доступа к диску не производилось TCP_DENIED доступ запрещен для этого запроса. TCP_OFFLINE_HIT запрошенный объект был извлечен из кэша в режиме offline. В режиме offline никогда не проверяются, См. пояснения по offline_mode в вашем файле squid.conf. UDP_HIT верная копия запрошенного объекта была в кэше UDP_MISS запрошенный объект отсутствует в этом кэше UDP_DENIED доступ запрещен для этого запроса UDP_INVALID был получен неверный запрос UDP_MISS_NOFETCH из-за параметра запуска "-Y" или частых отказов, кэш при хите будет возвращать либо UDP_HIT или этот код. Соседи таким образом получат только хиты. NONE указывается с ошибками и запросами cachemgr. TCP_CLIENT_REFRESH См. TCP_CLIENT_REFRESH_MISS. TCP_SWAPFAIL См. TCP_SWAPFAIL_MISS. TCP_IMS_MISS См. TCP_IMS_HIT. UDP_HIT_OBJ Совпавший объект больше недоступен. UDP_RELOADING См. UDP_MISS_NOFETCH.

Ссылки:

Литература

Справочная информация

tdkare.ru

Squid оптимизация

Squid оптимизация

Итак будем оптимизировать работу DNS.Для этого будет установлен bind9 в качестве кэшурующего сервера. А именно он будет получать запросы приходящие на него. Искать их, и запоминать для повторного обращения.

Как видно в статье Конфигурация Squid3 в качестве основного DNS указан 127.0.0.1

dns_nameservers 127.0.0.1 8.8.8.8

Установим сервер DNS

sudo apt-get install bind9

Впишем серверы пересылки

sudo nano /etc/bind/named.conf.options options { directory "/var/cache/bind"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. forwarders { // Google DNS //================================== 8.8.8.8; 8.8.4.4; // Open DNS //================================== 208.67.222.222; 208.67.220.220; }; listen-on { 127.0.0.1; 192.168.1.250; }; //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================== dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; };

Перезапустим сервис

sudo /etc/init.d/bind9 restart

Проверяем

nslookup ya.ru 127.0.0.1 Server: 127.0.0.1 Address: 127.0.0.1#53 Non-authoritative answer: Name: ya.ru Address: 213.180.204.3 Name: ya.ru Address: 93.158.134.3 Name: ya.ru Address: 213.180.193.3

Facebook

Twitter

Мой мир

Вконтакте

Одноклассники

Google+

imbicile.pp.ru

оптимизация производительности squid: ulrith

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

Но вот незадача: поначалу всё вроде было хорошо (или же я просто не присматривался), а потом я стал отмечать большие тормоза. Т.е. без прокси страницы грузились ощутимо быстрее. Fuuuuuuuuuuuuu…

В общем пришлось идти гуглить вопрос об ускорении squid. Нагуглил аж чувака из Last.FM, который оптимизирует свой squid под пиздец-нагрузку. Но мне же не надо пиздец, мне для дома для семьи.

Так что я из его советов взял только те, которые касались конфига и подредактировал его соответственно. А заодно размер кэша уменьшил с 10 Гб до 5 чтобы он лучше объёму памяти Шивы соответствовал (512 Мб).

Вроде как залетало пока. Но буду ещё дальше следить…

Вот рекомендуемый мной squid.conf:

ВНИМАНИЕ! Я вырезал все лишние параметры, такие как http_port IP:PORT, так как их использование выходит за рамки этой записи в блоге.

hosts_file /etc/hostsdns_nameservers x.x.x.x x.x.x.xcache_replacement_policy heap LFUDAcache_swap_low 90cache_swap_high 95maximum_object_size_in_memory 50 KBcache_dir aufs /var/spool/squid 40000 16 256cache_mem 100 MBlogfile_rotate 10memory_pools offmaximum_object_size 50 MBquick_abort_min 0 KBquick_abort_max 0 KBlog_icp_queries offclient_db offbuffered_logs onhalf_closed_clients off

Хорошо, но что это все дает?hosts_file /etc/hosts: заставляет squid искать какие-либо записи об узлах в файле /etc/hosts. Не спрашивайте меня почему, но он не очень хорошо знает то, что этот файл используется по-умолчанию во всех дистрибутивах Linux.

dns_nameservers x.x.x.x x.x.x.x: Важно! Squid приостанавливает установление соединения до тех пор, пока не будет выволнен DNS-запрос, но каким-то образом, указание DNS-серверов в squid.conf исправляет это поведение (и да, это должны быть действительные сервера имен).

cache_replacement_policy heap LFUDA: Возможно, вы не захотите использовать политику замещения LFUDA. В противном случае рекомендую остановится на варианте с хипом, как на обладающим значительным преимуществом в производительности по сравнению с LRU. Подробную информацию о других политиках можно узнать тут.

cache_swap_low 90: нижняя граница, преодолев которую squid начинает вычищать мусор из своего кэша - измеряется в процентах. Если ограничение на размер хранилища составляет 10Гб, squid начнет расчистку, когда 9Гб будет использовано.

cache_swap_high 95: Верхняя граница. Squid начнет агрессивно избавляться от старых файлов в кэше, используя политику, указанную выше. Такой процесс начнется при 9,5Гб в приведенном выше примере. Если у вас огромный кэш, то следует отметить то, что эти проценты будут работать лучше, если будут находиться рядом, например для кэша 100Гб этот диапазон равен 90Гб/95Гб - 5Гб разницы. В этом случае границы лучше установить на 94%/95%.

maximum_object_size_in_memory 50 KB: Если вы не хотите супер быстро выдавать большие файлы из памяти, рекомендую указать значение пониже - в основном для того, чтобы держать под контролем использование памяти. Большие файлы монополизируют этот жизненно необходимый ресурс и, давая вам лучшую результативность в байтах, пожертвуют результативность запросов ввиду того, что файлы поменьше будут добавляться и удаляться из области подкачки.

cache_dir aufs /var/spool/squid X X X: я настоятельно рекомендую НЕ избавляться от AUFS. Что касается производительности, все прочие методы хранения оказались много более медлительными. Конечно же, необходимо заменить три X-са своими ограничениями на хранилище.

cache_mem 100 MB: Оставьте это значение низким. Оно указывает количество оперативной памяти, которую squid будет использовать для хранения закэшированных объектов. Помните, что squidу требуется приблизительно 100Мб на каждый Гб хранилища. Если у вас 10Гб хранилище, squidу потребуется ~1Гб только на то, чтобы с ним справиться. Убедитесь в том, что cache_mem + (размер хранилища * 100 Мб) меньше доступного количества оперативной памяти, иначе squid начнет использовать подкачку.

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

maximum_object_size 50 MB: измените этот параметр так, чтобы он соответствовал максимальному размеру объекта, выдаваемого из кэша. Я-бы посоветовал не задирать этот параметр слишком высоко. Лучше кэшировать много маленьких файлов, чем один большой, который скачают только четверо людей.

quick_abort_min 0 KB: в некоторых случаях эта штука полезна, но не в случае оптимизированного squid. Простыми словами, quick_abort занимается тем, что рассчитывает, сколько данных осталось передать, когда клиент отменяет закачку. Если это количество находится в пределах quick_abort, squid продолжит закачку, после чего поместит файл в кэш. Звучит отлично, правда? Чертовски плохо. Если клиент совершает несколько запросов, то это может вылиться в несколько скачиваний squidом одного и того же файла. Это все портит и замедляет ваш squid. 0 KB отключает эту возможность.

quick_abort_max 0 KB: см. quick_abort_min

log_icp_queries off: если вы используете cache_peers, то возможно не хотите знать о каждом разе, когда squid общается с одним из партнерских кэшей. В большинстве случаев это лишнее журналирование, и, к тому же лишний процесс ввода/вывода, который можно использовать еще где-нибудь.

client_db off: Если эта опция включена, squid будет вести статистику по каждому клиенту. Через некоторое время это может все затормозить, поэтому эту опцию лучше оставить выключенной.

buffered_logs on: Буфферизует запись в файлы журналов. Может немного увеличить производительность. Ваши данные могут быть иными.

half_closed_clients off: посылает сообщение о закрытии соединения клиентам, которые оставляют полуоткрытое соединение с сервером squid.

ulrith.livejournal.com


Prostoy-Site | Все права защищены © 2018 | Карта сайта