webcast lucasbrasilino squid
TRANSCRIPT
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 1/18
1 Otimizando o Proxy/CacheSquid
Lucas [email protected]
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 2/18
2
Agenda
Squid internals: seu design e forma defuncionamento
Parametrizações em tempo de compilação
Parametrizações em tempo de execuçãoParametrizações da pilha TCP/IP do Linux
Modalidades de I/O em cache de disco
Otimizando o uso de memória
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 3/18
3
Squid internals
Projetado para ser um único processo
Porém algumas funcionalidades são realizadas porprocessos externos. Exemplos:
dnsserver
ulinkd
redirectors
Externals ACL, etc.
Pode utilizar threads em uma modalidade de I/O para cache em disco
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 4/18
4
Squid internals
client-side server-sideStorage Manager
Store API
memPools
replacement policy
replacement policy
storeclient
comm_loop
HTTP HTTPFTPGOPHER
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 5/18
5
Tipos de otimizações
Opções (tags) no arquivo de configuraçãosquid.conf
Opções definidas na configuração dos fontes para
compilação (./configure)
Otimização do kernel do Linux (sysctl)
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 6/18
6 Uso de descritores dearquivos
Normalmente cada processo pode alocar nomáximo 1024 descritores
# ulimit -n
●
Este valor tende a ser insuficiente em redes deextrema carga
# squidclient mgr:info | grep “file desc”
Maximum number of file descriptors: 8192
Largest file desc currently in use: 1430
Number of file desc currently in use: 1377
Available number of file descriptors: 6815
Reserved number of file descriptors: 100
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 7/18
7 Parametrização: número dedescritores disponíveis para o
SquidAumente o número de descritores
Configure os fontes:
# ./configure --with-filedescriptors=8192
–
Configure o ambiente (shell) que o squid será executado:# ulimit -HSn 8192 && squid -DY
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 8/18
8
Parametrização: pilha TCP/IP
Aumente o número de portas locais disponíveis:# sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768 61000
# sysctl -w net.ipv4.ip_local_port_range="1024 65000"
net.ipv4.ip_local_port_range = 1024 65000
● Aumente o backlog
# sysctl net.ipv4.tcp_max_syn_backlog
net.ipv4.tcp_max_syn_backlog = 1024
# sysctl -w net.ipv4.tcp_max_syn_backlog=2048
net.ipv4.tcp_max_syn_backlog = 2048
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 9/18
9
Loop principal: comm_loop
Todos descritores possíveis são setados comoassíncronos (non-blocking)
É um loop chamando select(), ou similares:
São passados todos os descritores, exceto os referentes aarquivos em disco;
O kernel define quais descritores estão prontos para serem
lidos ou escritos;
Retorna tais descritores pro Squid;
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 10/18
10
Loop principal: comm_loop
select() é conhecidamente lento ao examinar um
grande número de descritores.
Uma alternativa plausível é utilizar poll()
No Linux, utilizeutilize epoll()
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 11/18
11 Modalidades de I/O paracache em disco
UFS - Unix File System
Modalidade padr ã o
Tais chamadas são síncronas (blocking)
Baixa performance: 30 – 50 op/seg
AUFS - Asynchronous Unix File System
Utiliza threads para 'paralelizar' o acesso a disco
Ideal em servidores SMPBoa performance: 150 – 200 op/seg
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 12/18
12 Modalidades de I/O paracache em disco
DISKD
É um daemon externo ao Squid, apenas para 'enfileirar' e
executar as chamadas de acesso a disco;
Boa performance: ~160 req/segCOSS - Cyclic Object Storage System
Armazena todos os objetos em um único arquivo
Segundo estudos iniciais, é a modalidade de melhor
performance ao cachear pequenos objetos;
P t i ã d lid d
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 13/18
13 Parametrização: modalidadesde
I/ORecomendação: AUFSConfigure os fontes:
# ./configure --enable-storeio='aufs'
– Configure o squid.conf:
cache_dir aufs /var/cache 10240 32 256
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 14/18
14 Parametrização:modalidades de I/O
Recomendação: AUFS + COSS
Configure os fontes:
# ./configure –enable-storeio='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
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 15/18
15
Uso de memória
O Squid aloca o somatório de:10Mb de RAM a cada 1Gb em cache_dir;
Valor configurado em cache_mem;
Aproximadamente de 10 a 20Mb adicionais;
Devemos evitar a todo custo que o sistema operacional
utilize o swap:
# free -m
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 16/18
16 Parametrização: uso dememória
É realizada configurando a opção cache_mem no
arquivo squid.conf;
Recomenda-se alocar a metade da memória RAM total
do servidor para o Squid:
cachemem= RAM −Total Mb
2−cachedir Mb
102,4−20
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 17/18
17
Considerações finais
Nunca deixe faltar descritores de arquivos !
Otimize o loop principal !
Use modalidades de I/O menos
computacionalmente custosas !Configure corretamente o uso de memória !
Não deixe o S.O. fazer swap !
Otimizando o Proxy/Cache
5/13/2018 Webcast Lucasbrasilino Squid - slidepdf.com
http://slidepdf.com/reader/full/webcast-lucasbrasilino-squid 18/18
18 Otimizando o Proxy/CacheSquid
Obrigado!!
Lucas [email protected]
Aguardo vocês no curso de Squid ;-)