Lassú Squid felturbózása

Fórumok

Sziasztok!

Miért lassulhat le a squid-om? Van benne egy reklámszűrés én erre gyanakszom és egy idő korlát.

squid.conf (részlet)

connect_timeout 10 seconds
peer_connect_timeout 5 seconds

acl muhely src 192.168.1.4
acl munkaidobenTilos dstdomain "/etc/squid/munkaidoben.txt"
acl munkaido time 8:00-16:00
acl reklamok dstdomain "/etc/squid/ad_block.txt"

http_access deny reklamok all
http_access deny munkaido munkaidobenTilos muhely
http_access allow all

Az ad-block.txt 42 Kb
A munkaidoben.txt 1,8 Kb

Lehet, hogy túl sok az adat benne? (2542 sor)
Esetleg kilehet tenni ezeket az adatok mysql táblába?

Előre is köszi a tanácsokat!

Hozzászólások

A SQUID-nél az első kérdés vakon mindig ilyesmi szokott lenni: memória? merevlemez bírja (sebesség)?

--
trey @ gépház

A helyedben máshol keresném a problémát, mert ezek azért nem olyan rettentő bonyolultságú szabályok, még csak delay pool sincs, meg más nagyon erőforrászabáló történet sem látszik.
Tényleg vagy diszk/memória paraméterezési probléma, vagy gyenge vasbeli képességek gyanúsabbak...

Apropó, nem írod, milyen OS, de felkészítetted a hálózati stack-et a terhelésre? Értsd: nem fogysz ki pl a TCP portokból?

Meg amíg nem írsz felhasználószámot és átlagos/csúcsterhelés-t req/s-ben, addig tényleg nagyon nehéz bármit mondani...

Debian Etch.
1GB mem. SATA 750 Gb HDD. 4 felhasználót szűr.

mosaic:/proc# cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 15
model : 75
model name : AMD Athlon(tm) 64 X2 Dual Core Processor 4600+
stepping : 2
cpu MHz : 2410.985
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy ts fid vid ttp tm stc
bogomips : 4826.46
clflush size : 64

A szerver terhelése 1-2% között mozog.

mosaic:/etc/squid# cat squid.conf
# WELCOME TO SQUID 2.6.STABLE5
# ----------------------------

# NETWORK OPTIONS
# -----------------------------------------------------------------------------

http_port 3128 transparent
# icp_port 3130

# OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM
# -----------------------------------------------------------------------------

acl QUERY urlpath_regex cgi-bin \?
acl helyi_halozat dst 192.168.1.0/24
cache deny QUERY helyi_halozat

acl apache rep_header Server ^Apache
broken_vary_encoding allow apache

# OPTIONS WHICH AFFECT THE CACHE SIZE
# -----------------------------------------------------------------------------

cache_mem 256 MB
cache_swap_low 90
cache_swap_high 95

maximum_object_size 4096 KB
minimum_object_size 128 KB
maximum_object_size_in_memory 8 KB

fqdncache_size 1024

# LOGFILE PATHNAMES AND CACHE DIRECTORIES
# -----------------------------------------------------------------------------

cache_dir ufs /var/spool/squid 1024 128 512

access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log

log_mime_hdrs on

log_fqdn on

hosts_file /etc/hosts

# TIMEOUTS
# -----------------------------------------------------------------------------

connect_timeout 10 seconds
peer_connect_timeout 5 seconds

# ACCESS CONTROLS
# -----------------------------------------------------------------------------

#Recommended minimum configuration:
acl all src 192.168.1.0/24
acl manager proto cache_object
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 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
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 Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
acl muhely src 192.168.1.4
acl munkaidobenTilos dstdomain "/etc/squid/munkaidoben.txt"
acl munkaido time 8:00-16:00

acl reklamok dstdomain "/etc/squid/ad_block.txt"
http_access deny reklamok all

# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager
# Only allow purge requests from localhost
http_access allow purge localhost
http_access deny purge
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports

http_access allow localhost

http_access deny munkaido munkaidobenTilos muhely
http_access allow all

http_reply_access allow all
icp_access allow all

# ADMINISTRATIVE PARAMETERS
# -----------------------------------------------------------------------------

cache_mgr admin@mosaic.molnarnet

cache_effective_user proxy
cache_effective_group proxy

visible_hostname mosaic.molnarnet

# MISCELLANEOUS
# -----------------------------------------------------------------------------

icon_directory /usr/share/squid/icons
short_icon_urls on

error_directory /usr/share/squid/errors/Hungarian

# DELAY POOL PARAMETERS (all require DELAY_POOLS compilation option)
# -----------------------------------------------------------------------------

coredump_dir /var/spool/squid

Ez eleddig egész pofás. Mondjuk lehet, hogy célszerűbb adblock céllal nem dstdomain-re szűrni, hanem "url_regex -i" -re. De ez csak 5let, kicsit hatékonyabb szűréseket tesz lehetővé, és nem kell teljes site-okat kitiltani.
Másrészt amúgy is adblock-ra inkább dansguardian a squid alá, és egyedi üres tartalmak kiszolgálása a reklámok helyén.

Ami egyrészt gáz a konfigban, az a "log_mime_hdrs on". Elég bőbeszédű, és tökéletesen fölösleges. Elég sok erőforrást is igényelhet.
Belekötnék még a cache_dir sorodba, feleslegesen sok könyvtárral dolgozol. Legyen inkább 32, 128, és még az is bőven az igényeid fölött van...

Amit megnéznék, mennyi interrupt-ot kell kezelnie a gépednek, nem lehet-e a hálókártyát inkább polling módban használni, plusz a kerneled hálózati konfigját lehetne tuningolni, bár ugye nem tudjuk, hogy áll.
Alap sysctl-ek ilyen esetben:

net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.ip_local_port_range = 1024 65100
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_rmem = 262144 262144 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.ipv4.tcp_sack=0
net.ipv4.tcp_dsack=0
net.ipv4.tcp_window_scaling=0
net.ipv4.tcp_ecn=0
net.ipv4.tcp_max_syn_backlog=4096
fs.file-max = 524288
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_syncookies = 1
kernel.threads-max = 65536
kernel.pid_max = 65535

Ha nagyon vágyod, fűzök magyarázatot, bár alapvetően RTFM... :) Elsősorban nyilván a hálózati limitek érdekesek, illetve a fájlleírók maximális száma.
Belassuláskor mi a jelenség? Magas load? Esetleg swapin/swapout?

Ha a böngészett oldal küld egy kérést egy olyan címre ami szerepel az ad_block.txt-ben akkor szokott várakozni a böngésző jó 10 mp-t.

Pl: index.hu
elkezdi betölteni a böngésző majd írja az alsó sávban a Firefox, hogy várakozása a következőre: adocean.pl. és ez az url persze szerepel a tiltó listán. Így várakozik egy darabig azt tölti tovább az oldalt.

Ha direkt beírom, hogy adocean.pl akkor egy szempillantás alatt kivágja, hogy a squid letiltotta az oldalt.

Egyéb config tanácsod megfogadom. mime és lemez kezelés :)

Aha. Ilyenkor felteszem, sok kérés jut egy időben a hivatkozott, amúgy tiltott oldalra (egy nyamvadt ndx.hu főoldalon van akár 25-40 gemius.pl, vagy sher.*.hu is, amit a böngésző mondjuk 10-esével tápol be a proxy-nak).

Megpróbálkozhatsz ilyenkor egy dns_children emeléssel, vagy az url_regex-szel.

Figyelj oda, hogy a cache_dir változtatáshoz törölnöd kell az előző cache_dir tartalmat leállított squid mellett, majd squid -Z kell az új könyvtárszerkezet létrehozásához.