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.
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).
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.
[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
[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.
[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.
[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
[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
[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
[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
[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
[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).