Ho montato da qualche giorno una vm con squid+dansguardian+clamav su una centos 6
funziona tutto bene ma sto notando un incremento della ram uccupata preoccupante.
L'occupazione della ram sale sempre di più ma non scende mai anche nel caso in cui il proxy non ha richieste.
Ho gia riavviato squid ogni 3 giorni ma continuo a non trovare la soluzione per l'occupazione della ram,in pratica se non riavvio il servizio rischio di rimanere senza risorse.
Squid e occupazione memoria
Da esperienze avute è quasi sicuramente colpa del clamav.
Mi era capitata una cosa simile con l'accoppiata spamassassin + clamav e il
sistema era impiantato.
Da allora faccio fare solo alla macchina firewall (Endian) la scansione antivirus di posta
e di navigazione, e tolto clamav da macchina server di posta e proxy.
Controlla in quei momenti quali sono i processi che occupano più risorse di tutti; se hai installato il front - end webmin lo vedi facilmente in due click. Comunque squid + dansguardian + clamav di risorse ne richiedono eccome, e tutto dipende sempre da quanti utenti hai collegati sotto e dalla configurazione di squid impostata
ciauz
è il processo di squid che aumenta pian piano,anche dopo che gli utenti sono disconnessi continua a mantenere la stassa memoria dopodichè una volta riconnessi aumenta sempre un po alla volta
Allora non è un problema dovuto a clamav, ma bensì a come hai configurato squid.
Posta i file di config che vedo di darci un'occhiata appena ho un attimo
Ciauz
Eccolo!
# Recommended minimum configuration:
#
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
#acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
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
#
# Recommended minimum Access Permission configuration:
#
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager
# Deny requests to certain unsafe ports
http_access deny !Safe_ports
# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports
# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all
# Squid normally listens to port 3128
http_port 3128
# We recommend you to use at least the following line.
hierarchy_stoplist cgi-bin ?
# Uncomment and adjust the following to add a disk cache directory.
cache_dir ufs /var/spool/squid 3000 16 512
# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid
# 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
cache_mem 768 MB
maximum_object_size_in_memory 4 MB
Ciao, è un pò scarno come file di config ;) Aggiungi questi :
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDFS
Questi due parametri regolali in base alle policy di replacement che preferisci, io in produzione uso sempre LFUDA e GDFS. Abbassa il valore cache_mem finchè siamo in debug e portalo a 256 MB.
La cache io ho sempre preferito avere una profondità di directory a 256 e non a 512, e soprattutto usa AUFS e non il vecchio UFS se preferisci la performance; come vedi nel mio
cache_dir aufs /var/spool/squid3 10000 16 256
Imposta anche un object size minimo per la cache :
minimum_object_size 1 KB
maximum_object_size 1 MB
Ricordati che giocando con questi due valori definisci se ci sarà maggiore velocità nella connessione, e meno risparmio di bandwithd oppure il contrario. A te la scelta in base alla connessione e agli utenti collegati che hai. Carica anche questi valori che ti riporto dal mio squid.conf ;) :
cache_swap_low 90
cache_swap_high 95
half_closed_clients off
ipcache_low 90
ipcache_high 95
range_offset_limit -1
quick_abort_min -1
Se dopo vuoi giocare un pò con i file di log, imposta pure anche queste direttive specifiche per i log (sempre prese dal mio squid.conf) :
log_icp_queries off
client_db on
buffered_logs on
logfile_rotate 10
emulate_httpd_log on
log_fqdn on
cache_log /var/log/squid3/cache/cache.log
cache_access_log /var/log/squid3/access/access.log
cache_store_log /var/log/squid3/store/store.log
cache_swap_log /var/log/squid3/swap/swap.log
Altra cosa, il filesystem che usi nella partizione dove squid memorizza la cache qual'è?
P.S. >> Per il significato di ogni parametro ti rimando al WIKI di Squid che è veramente intuitivo e chiaro.
Ciauz
il filesystem è ext3
la memoria occupata di squid sembra resistere comunque un pò di più
ma tende sempre ad aumentare
lo tengo un altro paio di giorni sotto osservazione dopodichè provo anche a disabilitare clamav da dansguardian
Strano, puoi postare i consumi dopo aver applicato le modifiche che ti ho indicato?
Ricorda che la cache di squid andrebbe su un file system con un sistema di journaling performante, come ReiserFS(anche se non più mantenuto), ext4 oppure XFS (Per fare alcuni nomi a titolo d'esempio).
Io con nemmeno 10 utenti il mio squid 3, su squeeze arriva a picco a 512 MB di RAM; e con una configurazione simile a quella correttiva indicata sopra.
Sfortunatamente non riesco mai ad aver tempo per smanettarci comunque questa è la situazione attuale
Al momento sono collegati al proxy 30 utenti ma dovro metterci anche i restanti 70
il problema sta nella cache dal log:
2012/02/08 21:18:40| storeLateRelease: released 0 objects
2012/02/08 21:19:26| DiskThreadsDiskFile::openDone: (2) No such file or directory
2012/02/08 21:19:26| /var/spool/squid/00/B8/0000B8C3
2012/02/08 21:19:34| DiskThreadsDiskFile::openDone: (2) No such file or directory
2012/02/08 21:19:34| /var/spool/squid/00/74/000074CD
2012/02/08 21:19:49| DiskThreadsDiskFile::openDone: (2) No such file or directory
2012/02/08 21:19:49| /var/spool/squid/01/B3/0001B3B4
ho controllato subito i permessi delle directory ma sembra tutto regolare squid:squid
i all'interno delle directory sono presenti numerosi file ma dai log sembra come se qualcosa non venga creato
i consumo partono dai 120mb iniziali a salire (entro 2 giorni occupa piu' di 1GB)
e scendono solamente riavviando il servizio (la memoria occupata non cala immediatamente dopo il riavvio ma dopo 1 o 2 minuti)
Assegna una cache_mem da 64 / 128 MB, e fai un bel reflush della cache di squid. Riavvia la macchina e vedi come va. Tieni conto che in casi di swap squid arriva ad occupare il valore di cache_mem moltiplicato per il numero di giga della cache fisica su disco (che tra l'altro hai su un file system non appropriato).
Io con squid3 finora di problemi simili non ne ho mai avuti ...
