Squid memòria cau - Part 2

Squid no és només un servei de proxy i cache, pot fer molt més: gestionar acl (llistes d'accés), filtrar contingut, fins i tot pot fer filtrat SSL i tot en mode transparent (mètode de proxy - sense haver de configurar en les opcions de servidor intermediari dels seus navegadors, és com man in the middle, ningú sap que hi és). Llavors comunament veig com es malgasta tot el potencial d'aquesta aplicació per no saber configurar cadascuna de les seves parts.

Ara l'interessant que fa squid és la memòria cau (al meu entendre). El teu em diràs ¿per què fer memòria cau ?, la raó és senzilla, administrar millor l'ús de la teva velocitat i ample de banda, és la primera preocupació. Pensa detingudament, 1000 persones en la teva empresa consultant cada 5 minuts, pàgines en comú, Google, Hotmail, Gmail, etc ... perquè vas a descarregar una vegada i una altra imatges, banners, publicitat, continguts html, tot això són coses estàtiques, no canvien tan sovint, millor tenir-les emmagatzemades en la teva xarxa local i lliuraments una còpia que consideres recent dins de les configuracions que vas considerar.

Com es fa ?, senzill amb la següent sentència:

refresh_pattern [-i] regex min percent max [options]

Com sempre dic, no creguin en tot, així que t'invito a llegir de la font oficial. Us recomano llegir el manual d'aquesta sentència AQUI

La sentència refresh_pattern sempre serà la nostra etiqueta per afegir nous paràmetres per fer memòria cau.

Important les teves llistes de memòria cau han de ser seqüencials, perquè una vegada faci matx amb la primera en què coincideixi amb l'objecte no seguirà llegint els teus altres regles

Les expressions regulars diferencien majúscula de minúscules, per tant no és el mateix flv que FLV però pots evitar això si així ho desitges usant l'opció -i . Aleshores quedaria així refresh_pattern -i

'Min': és el temps (minuts) en què un objecte serà considerat com a «recent o fresc» i si no té alguna etiqueta explicita d'«expirat». Per defecte squid recomana que sigui 0, per qüestions que algunes aplicacions dinàmiques poden comportar-se estrany, pur blah blah blah, realment aquest valor ha de ser un nombre que tu consideris útil i efectiu per als elements que desitges fer memòria cau, exemple: jpg, 1440 minuts (un dia) em sembla bé, no és com que si en una pàgina canvien les.

'Percent' és el percentatge que de l'edat d'un objecte (des de la darrera modificació) serà considerat «recent o fresc». T'explico, potser fent un reload o refresh constant per veure les últimes modificacions que es van fer en una pàgina web, squid podria considerar si ja té diguem un 50% del temps complert entre min i max , tornar a descarregar aquest objecte d'internet i donar-te una còpia nova.

'Max' és el límit per sobre o igual que 'Min' que tant de temps un objecte és considerat «recent o fresc», suposem que una imatge d'alguna pàgina només va ser consultada una vegada per un usuari, aquest objecte ja va complir el seu temps min , però no el max , llavors quan sigui consultat novament, es lliurés una còpia de memòria cau.

Options:
override-expire
override-lastmod
reload-into-ims
ignore-reload
ignore-no-store
ignore-private
max-stale=NN
refresh-ims
store-stale

Aquestes opcions es van fer majoritàriament per ignorar comportaments preestablerts en llenguatges i protocols, per així garantir l'ús efectiu de la memòria cau.

override-expire

Reforça el temps mínim d'un objecte, tot i que el servidor vaig enviar un temps d'expirar menor (exemple coses com header o Cache-Control: max-age). Si fem això sortirà un «revisió de resultats» dient coses com aquesta «VIOLATES the HTTP standard» però això és només advertències que podem ignorar. Ara si el temps que envia un servidor és més gran llavors squid prengués el temps (de venciment) de servidor

override-lastmod

Reforça el temps mínim d'un objecte, encara que aquest objecte hagi estat modificat recentment.

reload-into-ims

La explicació curta, és que evita que quan premem el botó de refrescar o fem una petició no-cache, squid lliurés memòria cau si no ha estat «modificat des» i / o si no hi ha algun «headers» a la pàgina

ignore-reload

Ignora l'acció dels usuaris de pressionar el botó de recarregar o refrescar pàgina

ignore-no-store

IIgnora qualsevol regla en «headers» de no fer memòria cau, per exemple de vídeos

ignore-private

Ignora qualsevol regla en «headers» de contingut privat que no s'ha de fer memòria cau, exemple: contingut de facebook.

refresh-ims

Squid contacta amb el servidor, per garantir si l'objecte és el més nou. Si ho és llavors lliurés memòria cau

store-stale

Squid guardés totes aquestes respostes, encara que no tenen data de caducitat, això és molt poc pràctic a causa que usualment no poden ser reutilitzades. Si decideixes habilitar-has de declarar max-stale = NN

max-stale=NN

Si habilitaste l'anterior, has de declarar un temps màxim de vida per a aquesta resposta o factor. Squid no lliurament objectes d'aquest estil sinó el pot validar amb la font

Aquí els deixo una taula de com funciona l'estat de fresc «FRESH» segons els valors que hem parlat:

  • FRESH if expiri> now, else Stale
  • Stale if age> max
  • FRESH if lm-factor <percent, else Stale
  • FRESH if age <min else stale

Aquí una configuració d'exemple per a una empresa en específic amb molt d'espai en disc, bons equips i bon ample de banda

refresh_pattern -i \.(3gp|7z|ace|asx|bin|deb|divx|dvr-ms|ram|rpm|exe|inc|cab|qt)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(rar|jar|gz|tgz|bz2|iso|m1v|m2(v|p)|mo(d|v)|arj|lha|lzh|zip|tar)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(jp(e?g|e|2)|gif|pn[pg]|bm?|tiff?|ico|swf|dat|ad|txt|dll)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(avi|ac4|mp(e?g|a|e|1|2|3|4)|mk(a|v)|ms(i|u|p)|og(x|v|a|g)|rm|r(a|p)m|snd|vob)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(pp(t?x)|s|t)|pdf|rtf|wax|wm(a|v)|wmx|wpl|cb(r|z|t)|xl(s?x)|do(c?x)|flv|x-flv)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
cache_mem 8092 MB

Ara el cache no és només en disc dur, també podem fer cache en memòria ram, aquest valor és per cada procés squid, així que has de prendre'l en consideració quan uses redirectors com squidGuard

maximum_object_size_in_memory 1024 KB

La mida màxima de l'objecte en memòria que squid emmagatzemés en RAM. També pots declarar un mínim.


memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF

Com veuen un és la política per al reemplaçament de memòria cau en memòria RAM i una altra en disc dur. Existeixen 2 polítiques GDSF i LFUDA. La primera busca millorar el percentatge d'encerts de memòria cau, tenint molts objectes petits a la mà, el segon busca el contrari, el manté objectes en memòria cau sense importar la seva mida.

La pregunta que m'imagino que m'estàs fent en aquest moment és Quin ús ?, bé si el teu consideres que en el teu entorn fan moltes consultes i poques descàrregues fa servir GDSF si per contra fan moltes descàrregues i poques consultes LFUDA. Això si et recomano LFUDA quan vas a fer, no sé, cau en 1TB de disc, és mes eficient.

maximum_object_size 4 MB

La mida màxima que pot tenir un objecte per a ser emmagatzemat

cache_dir aufs /media/proxy249/cache 100 16 256

On estarà emmagatzemat la memòria cau, atenció aquí, important és si fas servir ufs, aufs o diskd, els 3 funcionen més o menys igual, la diferències aquesta és que aufs i diskd treballen amb processos separats per fer les operacions I / O en disc dur i evitar que els processos de squid es quedin penjats durant aquestes operacions, addicionalment diskd pots especificar la quantitat de fils que vas a disposar per a aquesta tasca. Jo recomano aufs si tens un bon equip.

Mida 100 (megues), pots col·locar 100000 són gairebé 100 GB depèn de la teva disponibilitat. 16 és el nombre de carpetes, i 256 és el nombre de sub-carpetes. Pots jugar amb els dos valors depèn que tan ràpid siguin els teus discos i que tant recursos tens.


cache_swap_low 90
cache_swap_high 95

Aquestes opcions són els valors de reemplaçament d'objectes, és el valor mínim i màxim com a marca d'aigua segons squid, on aquests números són en percentatge (%), i en memòria cau molt petits un 5% com aquesta ara mateix serien diguem 300 objectes per segons , però en caches molt grans estaríem parlant de milers de MB

Bé aquí els deixo, això per ara, comentin i també prengui en consideració aquells que em deien que no podien fer memòria cau i filtratge de pagines https (SSL) en squid 3.5 o superior, els hi portaré aviat, romanguin atents a aquest bloc.


Afegir com a font preferida a Google