Добрый вечер.
Возникла проблема с тормозами squid'а.
При более 400 одновременных соединений открытие страниц через squid становится медленным (начинает притормаживать), если пускать в обход squid'а - всё летает. Процессор почти не загружен и Память только на 3%.
Что делать? Куда дальше крутить настройки?Выкладываю свой squid.conf:
tcp_outgoing_address ххх.ххх.ххх.ххх
http_port ххх.ххх.ххх.ххх:3128 transparentacl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl to_localnet dst 10.0.0.0/8acl direct dstdomain ххх
acl direct dstdomain ххх.ru
always_direct allow directacl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 81 # http2
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 CONNECThttp_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_portshttp_access allow localnet
http_access allow localhost
http_access deny allpositive_dns_ttl 2 minute
negative_dns_ttl 30 second
shutdown_lifetime 1 seconds
icp_port 0
dns_nameservers 127.0.0.1
dns_v4_first oncache_mem 8 GB
maximum_object_size_in_memory 512 KB
memory_replacement_policy heap GDSF
cache_dir ufs /var/spool/squid 10000 16 256
maximum_object_size 512 KB# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
visible_hostname proxyЗаранее всем спасибо :-)
> cache_dir ufs /var/spool/squid 10000 16 256Вам не кажется, что дисковый кэш в 10 ГБ это многовато? Имхо ваш сквид занимается вводом-выводом диска вместо отдачи контента, то бишь чтением индексов кэша и самого кэша. Если у вас трафик прова безлимитный, то я бы советовал вообще отключить дисковый кэш. В свое давнее время анализировал эффективность дискового кэша, она была мизерной 3-6%.
>> cache_dir ufs /var/spool/squid 10000 16 256
> Вам не кажется, что дисковый кэш в 10 ГБ это многовато? Имхо
> ваш сквид занимается вводом-выводом диска вместо отдачи контента, то бишь чтением
> индексов кэша и самого кэша. Если у вас трафик прова безлимитный,
> то я бы советовал вообще отключить дисковый кэш. В свое давнее
> время анализировал эффективность дискового кэша, она была мизерной 3-6%.Пробовал, вот таким макаром:
cache_mem 8 GB
maximum_object_size_in_memory 512 KB
memory_replacement_policy heap GDSF
cache_dir ufs /var/spool/squid 10000 16 256
cache deny all
maximum_object_size 512 KBНо результатов - никаких.
>[оверквотинг удален]
>> то я бы советовал вообще отключить дисковый кэш. В свое давнее
>> время анализировал эффективность дискового кэша, она была мизерной 3-6%.
> Пробовал, вот таким макаром:
> cache_mem 8 GB
> maximum_object_size_in_memory 512 KB
> memory_replacement_policy heap GDSF
> cache_dir ufs /var/spool/squid 10000 16 256
> cache deny all
> maximum_object_size 512 KB
> Но результатов - никаких.Попробуй строчку: cache_dir null /dev/null
за место этой: cache_dir ufs /var/spool/squid 10000 16 256
> Попробуй строчку: cache_dir null /dev/null
> за место этой: cache_dir ufs /var/spool/squid 10000 16 256Спасибо за идею, но я squid ставил с базового репозитория. То есть не пересобирал его.
На строку cache_dir null /dev/null ругается. Надо пересобирать squid.
:-)
>> Попробуй строчку: cache_dir null /dev/null
>> за место этой: cache_dir ufs /var/spool/squid 10000 16 256
> Спасибо за идею, но я squid ставил с базового репозитория. То есть
> не пересобирал его.
> На строку cache_dir null /dev/null ругается. Надо пересобирать squid.
> :-)попробуй сменить тип формата дискового кэша, ufs старый формат, почитай про другие форматы:
http://www.squid-cache.org/Doc/config/cache_dir/
>> Попробуй строчку: cache_dir null /dev/null
>> за место этой: cache_dir ufs /var/spool/squid 10000 16 256
> Спасибо за идею, но я squid ставил с базового репозитория. То есть
> не пересобирал его.
> На строку cache_dir null /dev/null ругается. Надо пересобирать squid.
> :-)What sort of things impact the performance of my Squid ?
Squid will start suffering if you run out of any of your server resources. There's a few things that frequently occur:
You just plain run out of CPU. This is where all of your resources are low save your kernel and user CPU usage. This may be because you're still using poll() or select() for your network IO which just don't scale under modern loads.
Some crappy hardware (such as slow IDE disks and really cheap network cards) aren't that great at shoveling data around and require a lot of hand-holding by the CPU. If you see your interrupt/IOWAIT times up then it might be due to your hardware choices. I've seen this sort of thing happen with desktop-grade hardware pretending to be a server - eg the Sun "Desktop" hardware running Linux and using SATA disks. Lots of disk IO == Lots of time spent in IOWAIT.
Some hardware allows you to "tune" how much overhead it imposes on the system. Gigabit network cards are a good example of this. You trade off a few ms of latency versus a high interrupt load, but this doesn't matter on a server which is constantly handling packets. Take a look at your hardware documentation and see whats available.Linux servers spending a lot of time in IOWAIT can also be because you're overloading your disks with IO. See what your disk IO looks like in vmstat. You could look at moving to the aufs/diskd cache_dir if you're using UFS. COSS also can drastically drop IOWAIT times under heavy disk loads.
You're swapping! This happens quite often when people wind up cache_mem and don't watch how much RAM Squid is actually using. Watch the output of "vmstat" and see how much free memory is available. If you see your server paging memory in and out of disk then you're in trouble. Either decrease cache_mem or add more physical RAM.
>> Попробуй строчку: cache_dir null /dev/null
>> за место этой: cache_dir ufs /var/spool/squid 10000 16 256
> Спасибо за идею, но я squid ставил с базового репозитория. То есть
> не пересобирал его.
> На строку cache_dir null /dev/null ругается. Надо пересобирать squid.
> :-)поменяй формат кэша с ufs на aufs, надо ли после смены пересоздавать дисковый кэш не могу сказать, я бы удалил старый кэш и создал заново.
ты написал, что отключал кэширование командой
cache deny all
а надо вроде бы вот так:
no_cache deny all
>[оверквотинг удален]
>> не пересобирал его.
>> На строку cache_dir null /dev/null ругается. Надо пересобирать squid.
>> :-)
> поменяй формат кэша с ufs на aufs, надо ли после смены пересоздавать
> дисковый кэш не могу сказать, я бы удалил старый кэш
> и создал заново.
> ты написал, что отключал кэширование командой
> cache deny all
> а надо вроде бы вот так:
> no_cache deny allcache_store_log none - это сделано ? по дефолту оно так должно быть