Доброе время суток!
Проблема моя на FreeBSD 6.3 + Squid 2.6.18
Если через Squid ходить по чуть чуть - проблем никаких, но при интенсивном использовании (попытаться открыть 6-7-8 страниц одновременно) наблюдается сильное торможение в их открытии (минут 5-7), потом опять некоторое время нормально.
Проблема не в канале (во время торможения открытия страниц на клиенте, сервер тянет файл wget-ом на приличной скорости).
Подскажите пожалуйста, в какую сторону копать, как по экспериментировать и т.д.
Конфиг такой:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl webserver src 10.0.1.254/255.255.255.255
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
icp_access allow all
http_port 10.0.0.254:3128
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
cache_mem 350 MB
maximum_object_size_in_memory 5000 KB
maximum_object_size 5000 KB
memory_replacement_policy heap GDSF # ну тут уже от безисходности тыкал разные варианты
cache_replacement_policy heap GDSF
cache_dir diskd /usr/local/squid/cache 2048 16 256
cache_swap_low 90
cache_swap_high 95
access_log /usr/local/squid/logs/access.log squid
cache_store_log none
buffered_logs on
store_avg_object_size 50 KB
acl apache rep_header Server ^Apache
acl lan src 10.0.1.0/255.255.255.0
acl multimedia urlpath_regex -i \.mp3$ \.mpeg$ \.avi$ \.mov$
acl hi_speed src "/usr/home/me/hi_sp"
http_access allow lan
http_access deny CONNECT !SSL_ports
http_access deny !Safe_ports
http_access allow manager localhost
http_access allow manager webserver
http_access deny manager
http_access deny all
broken_vary_encoding allow apache
cache_effective_user squid
cache_effective_group squid
delay_pools 3
delay_access 1 allow hi_speed
delay_access 1 deny all
delay_access 2 allow multimedia
delay_access 2 deny all
delay_access 3 allow lan
delay_access 3 deny all
delay_class 1 1
delay_class 2 2
delay_class 3 1
delay_parameters 1 -1/-1
delay_parameters 2 10000/10000 -1/-1
delay_parameters 3 65000/65000
icp_port 0
htcp_port 0
fqdncache_size 4096
coredump_dir /usr/local/squid/cache
refresh_pattern ^ftp: 1440&nbs...
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
Заранее спасибо.
ps. Пробовал и через 1 и через 3 делей-пулы ходить, все тоже самое (проверяю через какой пул проходит соединения используя sqstat)
pps. Народный метод "все снести - поставить заново" не прошел.
>Если через Squid ходить по чуть чуть - проблем никаких, но при
>интенсивном использовании (попытаться открыть 6-7-8 страниц одновременно) наблюдается сильное торможение в
>их открытии (минут 5-7), потом опять некоторое время нормально.В cache.log чего-нибудь при этом пишет?
>cache_mem 350 MB
Может быть _меньше_ поставить, если оно в своп "залезает"?
Во время "тормозов" своп растёт?>delay_parameters 1 -1/-1
Может быть не давать совсем всё, оставить другим чуть-чуть.
>delay_parameters 2 10000/10000 -1/-1
>delay_parameters 3 65000/65000Может быть "поиграться", увеличивая /maximum ~~ 10000/20000, например.
>ps. Пробовал и через 1 и через 3 делей-пулы ходить, все тоже
>самое (проверяю через какой пул проходит соединения используя sqstat)
>pps. Народный метод "все снести - поставить заново" не прошел.Значит, не пулы, похоже. Память/своп, установление соединения "не полазит"
-- кто-то (сам?) уже занял весь канал, ...Если совсем ничего не "нашлось", включать подробные логи и снова искать.
Уменьшать количество ;) пользователей, увеличивать ширину канала...
>В cache.log чего-нибудь при этом пишет?ошибок нет.. обычные записи старта Squid-а
>>cache_mem 350 MB
>
>Может быть _меньше_ поставить, если оно в своп "залезает"?Так завысил в надежде что именно тут "узкое" место, при нормализации работы буду и тут поджимать.
>Во время "тормозов" своп растёт?
подскажите пожалуйста чем бы его получше понаблюдать. через кеш менеджер?
во время "тормозов" по чуть чуть растет в top память под squid, например с 55000к до 55700к.. но память там постоянно наращивается, насколько я понимаю потому что до максимума выделенного в cache_mem еще не добрался.
>>delay_parameters 1 -1/-1
>
>Может быть не давать совсем всё, оставить другим чуть-чуть.
>
>>delay_parameters 2 10000/10000 -1/-1
>>delay_parameters 3 65000/65000
>
>Может быть "поиграться", увеличивая /maximum ~~ 10000/20000, например.
>Уменьшать количество ;) пользователей, увеличивать ширину канала...Сейчас этот сервер отведен "в сторону" и через него ходит 3-4 человека ради тестирования.
>cache_mem 350 MBНе многовато ? сколько ОЗУ на машине ?
>
>maximum_object_size_in_memory 5000 KB
>maximum_object_size 5000 KBА это маловато. Увеличь оба до 8 мег хотя бы.
>
>memory_replacement_policy heap GDSF # ну тут уже от безисходности тыкал разные варианты
>
>cache_replacement_policy heap GDSFоставь LRU для начала
>
>cache_dir diskd /usr/local/squid/cache 2048 16 256Эх, любим мы гигантизм. Давай считать, сколько памяти нужно сквиду в ОЗУ ?
10 мег на каждый гиг КЭШа + cache_mem + 10-20MB
20+350+20=390 мег примерно. Есть столько на машине ? Система не свопит? Чем больше кэш, тем больше индексов лопатить, тем медленее искать объекты к кэше. Если ОЗУ 1 гиг, то можно так оставить.
>[оверквотинг удален]
>delay_access 3 allow lan
>delay_access 3 deny all
>
>delay_class 1 1
>delay_class 2 2
>delay_class 3 1
>
>delay_parameters 1 -1/-1
>delay_parameters 2 10000/10000 -1/-1
>delay_parameters 3 65000/65000Какой толщины канал в инет вообще? Практически никаких ограничений не ввел и хочешь, чтобы у тебя все летало у всех юзеров. Если тянешь wget-ом на полной скорости, все остальные будут сосать лапу. Нужно вводить пулы классов 2 или 3 и делить ведра на сеть.
delay_parameters 1 -1/-1 - это не есть хорошо, а даже очень плохо.
Сделай для начала вот так:
delay_class 1 2
delay_class 2 2
delay_class 3 2delay_parameters 1 20000/20000 10000/20000
delay_parameters 2 3000/3000 3000/3000
delay_parameters 3 10000/10000 5000/10000Это я написал от балды, нужно точно знать твою скорость канала, чтобы написать точнее. Учти, что кроме HTTP в сквиде у тебя еще наверняка работает почта, ftp и другие сервисы, на которые твой delay pool никак не влияет и потому весь канал сквиду отдавать нельзя!
>>cache_mem 350 MB
>
>Не многовато ? сколько ОЗУ на машине ?1 Гиг
сейчас навсякий случай уменьшу cache_mem до 150 MB
>>maximum_object_size_in_memory 5000 KB
>>maximum_object_size 5000 KB
>
>А это маловато. Увеличь оба до 8 мег хотя бы.сделаю и понаблюдаю
>>
>>memory_replacement_policy heap GDSF # ну тут уже от безисходности тыкал разные варианты
>>
>>cache_replacement_policy heap GDSF
>
>оставь LRU для началасейчас заменю
>>cache_dir diskd /usr/local/squid/cache 2048 16 256
>
>Эх, любим мы гигантизм. Давай считать, сколько памяти нужно сквиду в ОЗУ
>?
>10 мег на каждый гиг КЭШа + cache_mem + 10-20MB
>20+350+20=390 мег примерно. Есть столько на машине ? Система не свопит? Чем
>больше кэш, тем больше индексов лопатить, тем медленее искать объекты к
>кэше. Если ОЗУ 1 гиг, то можно так оставить.
>да, 1 Гиг, но сейчас прижму cache_mem = 150, 20+150+20=190.. понаблюдаю
>[оверквотинг удален]
>
>delay_parameters 1 20000/20000 10000/20000
>delay_parameters 2 3000/3000 3000/3000
>delay_parameters 3 10000/10000 5000/10000
>
>Это я написал от балды, нужно точно знать твою скорость канала, чтобы
>написать точнее. Учти, что кроме HTTP в сквиде у тебя еще
>наверняка работает почта, ftp и другие сервисы, на которые твой delay
>pool никак не влияет и потому весь канал сквиду отдавать нельзя!
>учту конечно в дальнейшей настройке, но пока еще только squid запущен + сервер как резервный сейчас, и через него только ради теста ходят 3-4 человека (пока не найду где проблема)
У меня тут несколько новых подробностей...
1. Debug уровня 9 показал проблемы с открытием ссылок вродеhttp://c.hit.ua/hit?i=1076&g=0&x=4&s=1&c=1&t=-120&j=1&w=1280 ....
http://c.hit.ua/hit?i=1076&g=0&x=4&s=1&c=1&t=-120&j=1&w=1280 ....
http://c.hit.ua/hit?i=1076&g=0&x=4&s=1&c=1&t=-120&j=1&w=1280 ....
http://banner.kiev.ua/cgi-bin/bi.cgi?h39171&6149522&1
они по несколько минут висят и не открываются, пока не отваливаются, я так понял, по таймауту.2. Во время торможения Squid-а у 1 клиента, второй совершенно нормально ходит в интернет (потихоньку естественно, при открытии многих страниц опять зависание).
Возник вопрос: в Squid-е есть какой то механизм очередей, с ограничением на пользователя по количеству одновременных запросов? Может просто эти ссылки (пункт 1) забивают очередь, и только после того как отваливаются по таймауту возобновляется нормальная работа клиентов?
немного по тестировал, проблемка вроде как закрыта:Все проблемы были именно в ссылках, которые не получалось открыть.
Ссылки на эти сайты были закрыты через ACL и проблемы пропали.
Ранее, получив 5-6-7 таких "неоткрываемых" ссылок то ли сам Squid (только для запросов конкретного клиента) то ли браузер (тестировалось на IE и Firefox) переходил в неопределенное состояние... несколько минут пытались их открыть.. потом бросали это гиблое дело и нормальная работа восстанавливалась.Спасибо за консультации.