Sei sulla pagina 1di 18

1

Otimizando o Proxy/Cache Squid

Lucas Brasilino brasilino@4linux.com.br

Agenda
Squid internals: funcionamento seu design e forma de

Parametrizaes em tempo de compilao Parametrizaes em tempo de execuo Parametrizaes da pilha TCP/IP do Linux Modalidades de I/O em cache de disco Otimizando o uso de memria

Squid internals
Projetado para ser um nico processo
Porm algumas funcionalidades so realizadas por processos externos. Exemplos:
dnsserver ulinkd redirectors Externals ACL, etc.

Pode utilizar threads em uma modalidade de I/ O para cache em disco

Squid internals

memPools replacement policy HTTP client-side

Storage Manager
storeclient replacement policy

server-side

HTTP FTP GOPHER

Store API comm_loop

Tipos de otimizaes
Opes (tags) squid.conf no arquivo de configurao

Opes definidas na configurao dos fontes para compilao(./configure) OtimizaodokerneldoLinux(sysctl)

Uso de descritores de arquivos


Normalmente cada processo pode alocar no mximo 1024 descritores
#ulimitn

Este valor tende a ser insuficiente em redes de extremacarga


#squidclientmgr:info|grepfiledesc
Maximumnumberoffiledescriptors:8192 Largestfiledesccurrentlyinuse:1430 Numberoffiledesccurrentlyinuse:1377 Availablenumberoffiledescriptors:6815 Reservednumberoffiledescriptors:100

Parametrizao: nmero de descritores disponveis para o Squid


Aumente o nmero de descritores
Configure os fontes:
#./configurewithfiledescriptors=8192

Configureoambiente(shell)queosquidserexecutado:
#ulimitHSn8192&&squidDY

Parametrizao: pilha TCP/IP


Aumente o nmero de portas locais disponveis:
#sysctlnet.ipv4.ip_local_port_range net.ipv4.ip_local_port_range=3276861000 #sysctlwnet.ipv4.ip_local_port_range="102465000" net.ipv4.ip_local_port_range=102465000

Aumenteobacklog
#sysctlnet.ipv4.tcp_max_syn_backlog net.ipv4.tcp_max_syn_backlog=1024 #sysctlwnet.ipv4.tcp_max_syn_backlog=2048 net.ipv4.tcp_max_syn_backlog=2048

Loop principal: comm_loop


Todos descritores possveis so setados como assncronos (non-blocking) um loop chamando select(),ousimilares:
Sopassadostodososdescritores,excetoosreferentesa arquivosemdisco; Okerneldefinequaisdescritoresestoprontosparaserem lidosouescritos; RetornataisdescritoresproSquid;

10

Loop principal: comm_loop


select() conhecidamente lento ao examinar um grandenmerodedescritores. Umaalternativaplausvelutilizarpoll() NoLinux,utilizeepoll()

11

Modalidades de I/O para cache em disco


UFS - Unix File System
Modalidadepadro Taischamadassosncronas(blocking) Baixaperformance:3050op/seg

AUFSAsynchronousUnixFileSystem
Utilizathreadspara'paralelizar'oacessoadisco IdealemservidoresSMP Boaperformance:150200op/seg

12

Modalidades de I/O para cache em disco


um daemon externo ao Squid, apenas para 'enfileirar' e executaraschamadasdeacessoadisco; Boaperformance:~160req/seg

DISKD

COSSCyclicObjectStorageSystem
Armazenatodososobjetosemumnicoarquivo Segundo estudos iniciais, a modalidade de melhor performanceaocachearpequenosobjetos;

13

Parametrizao: modalidades de I/O Recomendao: AUFS


Configure os fontes:
#./configureenablestoreio='aufs'

Configure o squid.conf:
cache_diraufs/var/cache1024032256

14

Parametrizao: modalidades de I/O


Recomendao: AUFS + COSS
Configure os fontes:
#./configureenablestoreio='aufs,coss'

Configure o squid.conf:

cache_dir coss /var/cache/storage.img 100 max-size=102400 cache_dir aufs /var/cache 10240 32 256

15

Uso de memria
O Squid aloca o somatrio de:
10Mb de RAM a cada 1Gb em cache_dir; Valorconfiguradoemcache_mem; Aproximadamentede10a20Mbadicionais;

Devemosevitaratodocustoqueosistemaoperacional utilizeoswap:
#freem

16

Parametrizao: uso de memria

realizada configurando a opo cache_mem no arquivosquid.conf; Recomendase alocar a metade da memria RAM total doservidorparaoSquid:

RAMTotalMb cachedirMb cachemem= 20 2 102,4

17

Consideraes finais
Nunca deixe faltar descritores de arquivos ! Otimize o loop principal ! Use modalidades de I/O computacionalmente custosas ! menos

Configure corretamente o uso de memria ! No deixe o S.O. fazer swap !

18

Otimizando o Proxy/Cache Squid

Obrigado!! Lucas Brasilino brasilino@4linux.com.br Aguardo vocs no curso de Squid ;-)

Potrebbero piacerti anche