Otimização Servidores Linux para Cache usando Squid

Nesse artigo irei tratar de configurações avançadas do servidor Linux usando a ferramenta squid. Utilizarei de técnicas para aumentar a performance tanto do sistema operacional, leitura em disco e configurações avançadas da ferramenta.

[ Hits: 61.519 ]

Por: Gilberto Andrade Milhomem em 30/08/2011


Otimizações



Otimizando o acesso a discos

Depois de muitas pesquisas em artigos nacionais e internacionais descobrimos que o acesso ao cache quando é utilizado o reiserfs chega a ser 20% mais rápido que outros filesystem, por exemplo ext3, ext2.

Aconselho a todos que quando efetuem a instalação do SO deixem uma partição somente para o cache, isso agiliza na leitura dos dados.

Supondo que você instalou o Debian e criou a partição "/cache" iremos instalar o reiserfs e formatar a unidade com a ferramenta.

# apt-get install reiserfsprogs

Depois do reiserfs instalado vamos formatar a unidade "/cache" que para mim é "/dev/sda12":

# mkfs.reiserfs /dev/sda12

Feito isso já temos "/cache" rodando reiserfs.

Outra dica é na montagem do filesystem "/cache" adicionar notail, noatime (isso agiliza muito na hora da leitura e gravação, uma vez que o squid tem seu próprio time, usando essas funções você evita de toda vez que o sistema salvar um arquivo ele faça serviço 2 vezes).

Entre no "/etc/fstab" e adicione:

/dev/sda12 /cache reiserfs defaults,notail,noatime 1 2


Otimização no SO

Irei mostrar como otimizar o sistema para que o mesmo aceite que varias conexões sejam realizadas em vários arquivos usando vários file descriptors. Muitas pessoas que instalam squid acabam passando por esse problema, o sistema bloqueia para que no máximo 1024 instâncias de arquivos sejam abertas.

Para conferir quantos arquivos podem ser abertos pelo SO é só digitar no console:

# ulimit -n
# ulimit -a

Vamos começar com a otimização:

Entre em "/etc/sysctl.conf", e adicione a seguinte linha:

fs.file-max = 65535


Depois digite no console:

# sysctl -p

Depois entre em "/etc/security/limits.conf", adicione as seguintes linhas no final do arquivo;

root soft nofile 16384
root hard nofile 32768
* soft nofile 16384
* hard nofile 32768


Muita gente me pergunta que após feito essas modificações o sistema aplica, mas quando é feito um reboot o limite volta para 1024. Para resolver esse problema é só adicionar a seguinte linha de comando em "/etc/pam.d/common-account":

session required pam_limits.so


Feito isto quando seu sistema iniciar o tuning será "startado" e todo o sistema estará otimizado para receber as requisições.
Página anterior     Próxima página

Páginas do artigo
   1. Download e instalação
   2. Otimizações
   3. Finalizando e verificando as otimizações
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Squid com autenticação ncsa_auth no Mandriva 2006

Configurando Squid para liberação de messenger em horário específico, dentre outros

Squid - Níveis de bloqueio para usuários

Squid3 no Debian 8 (Jessie) com suporte a filtro de páginas HTTPS

Instalando o Squid + SquidGuard

  
Comentários
[1] Comentário enviado por removido em 30/08/2011 - 05:01h

Pô, muito show essa dica! Eu não preciso desse tipo de configuração, mas é uma dica pra se guardar, extremamente útil e prática.

[2] Comentário enviado por removido em 30/08/2011 - 14:34h

Muito bom cara !



[3] Comentário enviado por gilbertomilhomem em 30/08/2011 - 15:07h

Obrigado pessoal, estamos ai para contribuir e somar... Abraços

[4] Comentário enviado por removido em 30/08/2011 - 18:54h

excelente artigo, já estou no aguardo do próximo!

por hora e por tratar-se de Debian segui seus passos mas alterei um pouquinho, compilei e empacotei um .deb com o Checkinstall:

$ wget -c http://www.squid-cache.org/Versions/v3/3.2/squid-3.2.0.11.tar.bz2
$ tar -jxf squid-3.2.0.11.tar.bz2
$ cd squid-3.2.0.11/
$ ./configure --prefix=/usr --bindir=/bin --sbindir=/sbin --sysconfdir=/etc/squid --enable-underscores --enable-storeio="diskd ufs aufs" --enable-removal-policies="heap lru" --enable-snmp --enable-delay-pools --enable-linux-netfilter --enable-useragent-log --enable-referer-log --disable-dependency-tracking --enable-cachemgr-hostname=localhost --enable-truncate --disable-ident-lookups --enable-pool --with-maxfd=16000
$ time make -j5
$ sudo checkinstall -D --install=no --pkgarch=all


* alterei o prefix padrão de /usr/local para /usr e como dependências inseri as que vem listadas abaixo que são as dependências do Squid3 no Debian:

libc6 (>= 2.7), libcap2 (>= 2.10), libcomerr2 (>= 1.01), libdb5.1, libexpat1 (>= 1.95.8), libgcc1 (>= 1:4.1.1), libgssapi-krb5-2 (>= 1.8+dfsg), libk5crypto3 (>= 1.6.dfsg.2), libkrb5-3 (>= 1.6.dfsg.2), libldap-2.4-2 (>= 2.4.7), libltdl7 (>= 2.4), libpam0g (>= 0.99.7.1), libsasl2-2, libstdc++6 (>= 4.4.0), libxml2 (>= 2.7.4), netbase, adduser, logrotate (>= 3.5.4-1), lsb-base

ainda não pude testar o novo pacote já que uso o 2.7.STABLE9-2.1

um abraço!

[5] Comentário enviado por gilbertomilhomem em 30/08/2011 - 21:24h

Boa Noite pessoal, obrigado pelo reconhecimento. Edps em breve irei publicar o próximo. Sobre os passos que você alterou acredito que irá funcionar perfeitamente, sem maiores problemas. Uma dica interessante que recomendo é sempre que finalizar a instalação e configuração verificar se o sistema levantou com as opções de otimizações ativadas, conforme item n° 3 do artigo. Qualquer duvida estou a disposição. Abraço.

[6] Comentário enviado por ctavares em 01/09/2011 - 17:43h

Amigo, muito bom o artigo, mas seria legal você dizer oque cada uma das configurações de otimização faz porque se não fica complicado colocar em prática em servidores de produção sem sabermos o que essas configs irão afetar.

[7] Comentário enviado por gilbertomilhomem em 01/09/2011 - 19:49h

Boa Noite Pessoal, ctavares obrigado pelo elogio, no artigo procuro demonstrar como obter um melhor desempenho tanto no sistema operacional, leitura em disco e aprimoramento de configurações na ferramenta squid. A primeira otimização conforme o artigo é na compilação do squid (com 16000 file descriptors disponíveis). Todo squid instalado por default tem uma limitação de 1024 File Descriptors. Esses Files Descriptors atuam diretamente no sistema de cache, Por exemplo: cada requisição de abrir algum determinando site o squid utilizará de um file descriptor para ir até o disco e voltar com a resposta da requisição. Acontece que quanto maior seja a rede e maior for o número de conexões maior será a utilização dos File Descriptors ultizados e se você não tiver uma política de aumento desse recurso você terá problemas de lentidão e travamentos no sistema. Quando isto o ocorre o sistema gera uma mensagem de erro indicando que você chegou ao limite de utilização Warning! Your cache is running out of filedescriptors. Na pagina sobre otimização de disco para cache, muitos estudos até mesmo do desenvolvedor da ferramenta squid chegaram a seguinte conclusão: Quando o cache roda sobre uma partição reseirfs existe um aumento de 20% na velocidade de leitura e gravação do cache, gerando com isso uma aumento de performance. Concluindo, ativando todas as configurações descritas no artigo poderemos ter um sistema de cache com alta perfomance, escalabilidade e estabilidade. Procurei resumir um pouco sobre as vantagens das configurações e coloco-me a disposição para eventuais duvidas. Abraço

[8] Comentário enviado por marcosilva79 em 02/09/2011 - 15:27h

Boa Rapaz, então em meus exeprimentos assim como na literatura de squid , tenho um excelente desempenho usando jfs como sistema de arquivo no cache do squid. só pra acrescentar outra opção, excelente artigo !
abraço

[9] Comentário enviado por gilbertomilhomem em 02/09/2011 - 17:40h

Boa Tarde Pessoal, obrigado marcosurf. Com certeza sua dica e experiência é muito importante e de grande valor para o artigo. Só para acrescentar um pouco algumas referencias segue alguns links interessantes http://wiki.squid-cache.org/BestOsForSquid http://blog.last.fm/2007/08/30/squid-optimization-guide

[10] Comentário enviado por marcosilva79 em 03/09/2011 - 22:10h

Gilberto dei uma boa pesquisada sobre os melhores sistemas de arquivo e é fato , apesar de jfs ser um bom sistema de arquivos para o cache do squid, o reiserfs realmente ainda o supera. Esse link resume tudo que pesquisei , para quem quiser se aprofundar segue o link:
http://www.squid-cache.org/mail-archive/squid-dev/200504/0033.html
Continue com seus artgos , ótimo trabalho !

[11] Comentário enviado por gilbertomilhomem em 04/09/2011 - 14:22h

Boa Tarde Pessoal, Obrigado marcosurf. Depois de alguns anos trabalhando com squid e analisando diversas documentações à respeito de reiserfs e squid cheguei a conclusão que ele é o melhor em questão de desempenho na gravação e leitura do disco junto ao squid. Este link que você postou em conjunto aos outros mencionados com certeza só vem a somar e deixar o artigo ainda mais detalhado, obrigado por sua contribuição.

[12] Comentário enviado por andersonlves em 05/09/2011 - 11:05h

Ei man, essas optimizaçoes so servem para o Squid 3.1 ou serve pra qualquer versao da 3.7 pra cima?

[13] Comentário enviado por andersonlves em 05/09/2011 - 11:06h

desculpa da 2.7 pra cima.

[14] Comentário enviado por gilbertomilhomem em 05/09/2011 - 11:10h

Bom dia Pessoal, Anderson basicamente serve para todas as versões o que pode modificar um pouco são sintaxes dos comandos e locais de arquivos dependendo da distro tem de diferente.

[15] Comentário enviado por maiconrissi em 13/09/2011 - 15:55h

Parabéns cara!

Att.
Maicon Rissi
http://www.maiconrissi.com/

[16] Comentário enviado por gilbertomilhomem em 14/09/2011 - 11:53h

Obrigado Maicon

[17] Comentário enviado por alex_arantes8 em 30/09/2011 - 14:44h

gilberto muito massa esse squid seu. gostaria que voce desce uma olha nesse squid meu que fiz e desse uma opiniao pois sou novato e sempre apanho muito...srs

**********************************************************************
#alex arantes
http_port 3128
visible_hostname NERADU
#configurando cache.
cache_mem 64 MB
maximum_object_size_in_memory 64 kb
maximum_object_size 512 MB
minimum_object_size 4 kb
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid 2048 16 256
cache_access_log /var/log/squid/access.log
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
#
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.0/24
acl SSL_ports port 563
acl Safe_ports port 80 21 443 563 70 210 280 488 591 777 901 1025-65535
acl purge method PURGE
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

#conectividade social e outros site Problematico
acl site url_regex "/etc/squid/site"
no_cache deny site
always_direct allow site
#
#liberando acesso ao chefe
#acl chefe src 192.168.1.121
#http_access allow chefe
#
#
#bloqueia downloads de extensao
#acl extban url_regex -i \.avi \.exe \.mp3 \.torrent
#http_access deny extban
#
#bloqueando tudo e so liberando oque pode
#acl permitido url_regex -i "/etc/squid/permitido.txt"
#http_access allow
#http_access deny all
#
#bloqueando por palavra
acl palavra dstdom_regex "/etc/squid/palavra.txt"
http_access deny palavra
#
#liberando conexao e proibindo sites.
#acl bloqueio url_regex -i "/etc/squid/bloqueio.txt"
#http_access deny bloqueio
#
#http_access deny all
acl redelocal src 192.168.x.0/24
#http_access deny !redelocal
#
#auth_param basic realm Serve WEB
#auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd
#acl autenticados proxy_auth REQUIRED
#http_access allow autenticados
#
http_access allow localhost
http_access allow redelocal
http_access deny all


[18] Comentário enviado por alex_arantes8 em 30/09/2011 - 14:45h

alex_arantes@unoeste.edu.br

[19] Comentário enviado por gilbertomilhomem em 08/10/2011 - 12:50h

Boa Tarde Alex, obrigado por seu reconhecimento. Sobre o que pode ser modificado em seu squid.conf acredito que isto depende muito do hardware, por exemplo se tiver bastante memoria poderia aumentar o valor de cache_mem, pelo o que vi você está fazendo cache de 2 GB somente, poderia aumentar esse valor (se tiver hd maior), para um melhor desempenho usaria em cache_dir aufs. Mais isso tudo depende de uma análise adequada dos requisitos. Abraço

[20] Comentário enviado por noir em 20/10/2011 - 10:37h

Opa parabens !!!!

vou montar um servido e efetuar testes !!!

[21] Comentário enviado por ClovisFilho em 18/11/2011 - 10:33h

Ótimo artigo, meus parabéns. Irei realizar alguns testes no meu Slackware.

Obrigado!

[22] Comentário enviado por thiagocpv em 11/02/2012 - 17:11h

Posso está enganado, mas onde foi dito que o squid irá usar a particao /cache ao invés da particao padrao de instalacao ?
Nao lembro de ter visto no artigo....no mais está de Parabens!

[23] Comentário enviado por gilbertomilhomem em 11/02/2012 - 18:16h

Obrigado noir, ClovisFilho, thiagocpv e a todos pelo reconhecimento. thiagocpv referente o uso da partição /cache é uma demonstração de como otimizar o filesystem para melhor leitura, para que o squid utilize esta partição será necessario o apontamento no arquivo squid.conf. Em breve vou estar publicando o segundo artigo sobre otimização e nele vou abordar as melhores configurações no arquivo squid.conf. Abraço

[24] Comentário enviado por ch4c4r em 07/04/2012 - 09:38h

Muito bom artigo, também espero o próximo sobre otimização do squid.conf! Abraços :D

[25] Comentário enviado por matheusoveral em 10/04/2012 - 17:51h

Muito bom o artigo.

Parabéns!

[26] Comentário enviado por alexhctp em 13/04/2012 - 17:28h

Parabéns Gilberto! Seu artigo é extremamente claro, objetivo, sem firulas e ensina de forma direta.

Aguardando o artigo sobre o squid.conf.

Obrigado por contribuir!!!

[27] Comentário enviado por joorlando3 em 21/05/2012 - 11:22h

Bom dia!

Obrigado pelo artigo muito bem escrito.

[28] Comentário enviado por eduardocapaneli em 21/08/2012 - 22:11h

supimpa :)

[29] Comentário enviado por Nicolas777 em 31/08/2012 - 13:12h

Excelente...

[30] Comentário enviado por mcardoso em 11/09/2012 - 17:25h

To tentando configurar o squid/iptables e tá meio complicado pra mim... tenho um server windows 2008 com dhcp, dns e tudo já pronto, minha intenção era usar o squid/iptables em cima da configuração já existente de Windows... Será que alguém não me dá uma luz?
Valeu!
Abraço

[31] Comentário enviado por tws em 14/12/2012 - 18:04h

Ótimas dicas!
http://www.comoganhardinheirointernet.com/

[32] Comentário enviado por gilbertomilhomem em 15/12/2012 - 13:00h


[30] Comentário enviado por mcardoso em 11/09/2012 - 17:25h:

To tentando configurar o squid/iptables e tá meio complicado pra mim... tenho um server windows 2008 com dhcp, dns e tudo já pronto, minha intenção era usar o squid/iptables em cima da configuração já existente de Windows... Será que alguém não me dá uma luz?
Valeu!
Abraço


Olá mcardoso!
Qual seria sua dificuldade?
Abraço

[33] Comentário enviado por gilbertomilhomem em 15/12/2012 - 13:03h

Obrigado ch4c4r, matheusoveral, alexhctp, joorlando3, eduardocapaneli, Nicolas777, tws.
Em breve a segunda parte das dicas de otimização do squid (configurações do squid.conf).

Abraço à todos...

[34] Comentário enviado por allanbarcelos em 26/01/2013 - 15:08h

você tem alguma ideia de como resolver o problema de lentidão de alguns sites comom por exemplo da caixa no squid 3.1.x ?

[35] Comentário enviado por michelljr em 02/04/2013 - 16:53h

Show de bola esse artigo! Estamos na espera no tunning no arquivo de configuração do squid!

Grato!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts