Páginas

quarta-feira, 20 de março de 2013

Squid - Tunning para alto tráfego

Cenário

No cenário este “tunning” foi um servidor com 4GB de RAM, sendo 3 GB dedicados para o Squid. Dois discos SCSI de 10k com um processador Xeon 2.4 rodando Debian 6.

O mesmo está atendendo em horário de pico, em média de 1000 usuários simultaneamente, efetuando autenticações via winbind em um domínio NT (Active Directory) no Windows Server Enterprise 2008.

Modificando algumas configurações do kernel

Primeiramente vamos alterar alguns valores do kernel padrão, reduzindo o tempo de limpeza da tabela ARP e aumentando o seu tamanho, bem como aumentando o número de conexões simultâneas que o servidor irá atender e reduzir o tempo de espera entre as conexões.

Para isso, vamos alterar o arquivo sysclt.conf:

# vim /etc/sysctl.conf

E no final do arquivo, adicionar as seguintes linhas:

####### TUNNING PARA SQUID ########
# Reduzir o tempo de limpeza da tabela ARP
# Expandir o seu tamanho
net.ipv4.neigh.default.gc_interval = 15
net.ipv4.neigh.default.gc_thresh1 = 4096
net.ipv4.neigh.default.gc_thresh2 = 8192
net.ipv4.neigh.default.gc_thresh3 = 16384# Aumento do numero de conexoes simultaneas
# Reducao do tempo de espera entre as conexoes
net.core.somaxconn = 20480
net.core.netdev_max_backlog = 2048
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_max_syn_backlog = 2048
Após adicionar as linhas e salvar o arquivo, é necessário executar o comando “sysclt -p” para que as alterações sejam importadas pelo kernel.

Modificando os limits de segurança

Uma outra boa prática adotada foi modificar os valores de limits do kernel. Para verificar os limits do seu kernel, basta digitar o comando:

# ulimit -a.

No meu caso, apenas alterei o valor de ‘open files’, que no padrão era 1024 e passei para 16384.

Para fazer esta alteração, basta digitar o seguinte comando na console:

# ulimit -n 16384

Porém, ao reiniciar o servidor, os valores de ‘limits’ irão retornar para o padrão. Para que isso não aconteça, edite o arquivo limits.conf:

# vim /etc/security/limits.conf

No final do arquivo, inclua as seguintes linhas:

#### TUNNING DE LIMITS DE KERNEL #####
root soft nofile 16384
root hard nofile 32768
* soft nofile 16384
* hard nofile 32768
Considerações finais

Modificando configuração padrão do Squid.

Agora vamos alterar o valor padrão de arquivos de descritores abertos pelo Squid. Para isso edite o arquivo /etc/default/squid.

Neste arquivo tem um valor padrão de 1024, altere para 4096.

Pronto, o seu kernel para uso do Squid está ‘tunado’… Uma alteração a gosto, de quem quiser testar, também foi modificar os parâmetros de leitura de cache no “squid.conf”.

Percebi uma melhora significativa na velocidade de acesso ao cache ao usar o método diskd no lugar de aufs.

Em algumas pesquisas na Internet, encontrei registros em que o diskd consegue fazer até 160 requisições por segundo ao cache no disco, sendo que o aufs, gira em torno de 40 requisições por segundo.

Entendido isso, foi alterado o cache para os seguintes parâmetros:

cache_dir diskd /var/spool/squid 20480 64 256 Q1=64 Q2=72
Se pesquisarem sobre este parâmetro, deverão encontrar muita coisa, então não irei abordar o por quê dos por quês…

Feito estas configurações, recomendo reiniciar o servidor e levantar o Squid para ver as melhoras de performance.

No meu caso, a navegação ficou visivelmente mais rápida.

fonte: http://aurelianomartins.wordpress.com/2012/06/16/tunning-squid-para-alto-trafego/

Nenhum comentário:

Postar um comentário