Webcast Lucasbrasilino Squid

18
 1 Otimizando o Proxy/Cache Squid Lucas Brasilino [email protected]

Transcript of Webcast Lucasbrasilino Squid

Page 1: Webcast Lucasbrasilino Squid

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]

Page 2: Webcast Lucasbrasilino Squid

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

Page 3: Webcast Lucasbrasilino Squid

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

Page 4: Webcast Lucasbrasilino Squid

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

 

Page 5: Webcast Lucasbrasilino Squid

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)

 

Page 6: Webcast Lucasbrasilino Squid

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

 

Page 7: Webcast Lucasbrasilino Squid

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

 

Page 8: Webcast Lucasbrasilino Squid

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

 

Page 9: Webcast Lucasbrasilino Squid

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;

 

Page 10: Webcast Lucasbrasilino 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()

 

Page 11: Webcast Lucasbrasilino Squid

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

 

Page 12: Webcast Lucasbrasilino Squid

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

Page 13: Webcast Lucasbrasilino Squid

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

 

Page 14: Webcast Lucasbrasilino Squid

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

 

Page 15: Webcast Lucasbrasilino Squid

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

 

Page 16: Webcast Lucasbrasilino Squid

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

 

Page 17: Webcast Lucasbrasilino Squid

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

Page 18: Webcast Lucasbrasilino Squid

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 ;-)