Cache do Squid - parte 2

O Squid não é apenas um serviço de proxy e cache, ele pode fazer muito mais: gerenciar acl (listas de acesso), filtrar conteúdo, ele pode até mesmo fazer a filtragem SSL mesmo em modo transparente (método proxy - sem ter que configurar nas configurações de proxy de seus navegadores, é como um homem no meio, ninguém sabe que está lá). Portanto, normalmente vejo como todo o potencial desse aplicativo é desperdiçado por não saber como configurar cada uma de suas partes.

Agora, a coisa interessante que o squid faz é o cache (na minha opinião). Você vai me dizer, por que cache? O motivo é simples, gerenciar melhor o uso de sua velocidade e largura de banda, é o principal. Pense bem, 1000 pessoas em sua empresa consultando a cada 5 minutos páginas comuns, Google, Hotmail, Gmail, etc ... para que você baixe imagens, banners, anúncios, conteúdo html repetidamente, tudo isso é estático, não Eles mudam com tanta frequência, é melhor mantê-los armazenados em sua rede local e você entrega uma cópia que você considera recente dentro das configurações que você considerou.

Como fazer? Simples com a seguinte frase:

refresh_pattern [-i] regex min percent max [options]

Como eu sempre digo, não acredite em tudo, por isso convido você a ler na fonte oficial. Eu recomendo que você leia o manual desta frase AQUI

A sentença padrão de atualização Sempre será nosso rótulo adicionar novos parâmetros ao cache.

Importante, suas listas de cache devem ser sequenciais, pois assim que corresponder à primeira que corresponder ao objeto, não continuará lendo suas outras regras.

As expressões regulares diferenciam maiúsculas de minúsculas, portanto flv não é o mesmo que FLV, mas você pode evitar isso se desejar usando a opção -i . Então ficaria assim atualizar_padrão -i

'Min': É o tempo (minutos) em que um objeto será considerado "recente ou fresco" e se não possuir um rótulo explícito de "expirado". Por padrão, o squid recomenda que seja 0, por razões que alguns aplicativos dinâmicos podem se comportar de maneira estranha, puro blá, blá, blá, realmente esse valor deve ser um número que você considera útil e eficaz para os elementos que deseja armazenar em cache, exemplo: jpg, 1440 minutos (um dia) parece bom para mim, não é como se em uma página as imagens de um post mudassem a cada 5 minutos.

'Por cento' É a porcentagem da idade de um objeto (desde a última modificação) que será considerada «recente ou recente». Deixe-me explicar, talvez fazendo um recarregamento ou atualização constante para ver as últimas modificações que foram feitas em uma página da web, o squid poderia considerar se já completou, digamos, 50% do tempo entre minutos y max, baixe novamente esse objeto da Internet e forneça uma nova cópia.

'Max' é o limite acima ou igual a 'Min' por quanto tempo um objeto é considerado «recente ou fresco», suponha que uma imagem de alguma página foi consultada apenas uma vez por um usuário, esse objeto já atingiu o seu tempo minutos, mas não o max, então, quando for consultado novamente, uma cópia do cache será entregue.

Options:
override-expire
override-lastmod
reload-into-ims
ignore-reload
ignore-no-store
ignore-private
max-stale=NN
refresh-ims
store-stale

Essas opções foram feitas principalmente para ignorar comportamentos pré-estabelecidos em linguagens e protocolos, a fim de garantir o uso efetivo do cache.

override-expire

Ele impõe o tempo mínimo de um objeto, mesmo se o servidor enviar um tempo de expiração mais curto (coisas de exemplo como cabeçalho ou Cache-Control: max-age). Se fizermos isso, um "aviso" aparecerá dizendo coisas como "VIOLA o padrão HTTP", mas são apenas avisos que podemos ignorar. Agora, se o tempo que um servidor envia é maior, então o squid vai levar o tempo (expiração) do servidor

override-lastmod

Reforça o tempo mínimo de um item, mesmo se esse item foi modificado recentemente.

reload-into-ims

A breve explicação é que evita que quando pressionamos o botão de atualização ou fazemos uma solicitação sem cache, o squid entregará o cache se não tiver sido "modificado desde" e / ou se não houver "cabeçalhos" na página.

ignore-reload

Ignore a ação dos usuários de pressionar o botão recarregar ou atualizar a página

ignore-no-store

Ignore qualquer regra nos cabeçalhos para não armazenar em cache, por exemplo de vídeos

ignore-private

Ignore qualquer regra em cabeçalhos de conteúdo privado que não devem ser armazenados em cache, por exemplo: conteúdo do Facebook.

refresh-ims

O Squid contata o servidor, para garantir se o objeto é o mais novo. Se for, ele entregará o cache

store-stale

O Squid salvará todas essas respostas, mesmo que não tenham uma data de validade, isso é muito impraticável, pois geralmente não podem ser reutilizadas. Se você decidir habilitá-lo, você deve declarar max-stale = NN

max-stale=NN

Se você habilitou o acima, deve declarar uma vida útil máxima para essa resposta ou fator. O Squid não entrega objetos deste estilo, mas pode validá-lo com a fonte

Aqui está uma tabela de como o estado de fresco "FRESH" funciona de acordo com os valores que discutimos:

  • FRESH se expirar> agora, senão STALE
  • STALE se idade> max
  • FRESH se fator-lm <por cento, senão STALE
  • FRESH se idade <min. Else STALE

Aqui está um exemplo de configuração para uma empresa específica com muito espaço em disco, bom equipamento e boa largura de banda

refresh_pattern -i \.(3gp|7z|ace|asx|bin|deb|divx|dvr-ms|ram|rpm|exe|inc|cab|qt)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(rar|jar|gz|tgz|bz2|iso|m1v|m2(v|p)|mo(d|v)|arj|lha|lzh|zip|tar)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(jp(e?g|e|2)|gif|pn[pg]|bm?|tiff?|ico|swf|dat|ad|txt|dll)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(avi|ac4|mp(e?g|a|e|1|2|3|4)|mk(a|v)|ms(i|u|p)|og(x|v|a|g)|rm|r(a|p)m|snd|vob)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(pp(t?x)|s|t)|pdf|rtf|wax|wm(a|v)|wmx|wpl|cb(r|z|t)|xl(s?x)|do(c?x)|flv|x-flv)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
cache_mem 8092 MB

Agora o cache não está apenas no disco rígido, podemos também armazenar em cache a memória ram, este valor é para cada processo do squid, então você deve levar isso em consideração ao usar redirecionadores como SquidGuard

maximum_object_size_in_memory 1024 KB

O tamanho máximo do objeto na memória que o squid irá armazenar na RAM. Você também pode declarar um mínimo.


memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF

Como você pode ver, uma é a política de substituição do cache na memória RAM e outra no disco rígido. Existem 2 políticas GDSF e LFUDA. O primeiro busca melhorar o percentual de acertos do cache, tendo muitos objetos pequenos em mãos, o segundo busca o contrário, mantém os objetos no cache independente de seu tamanho.

A pergunta que imagino que você esteja me perguntando no momento é: qual uso eu uso? Bem, se você considerar que em seu ambiente eles fazem muitas consultas e poucos downloads usam GDSF se ao contrário eles fazem muitos downloads e poucas consultas LFUDA. Que se eu recomendar o LFUDA quando for fazer, não sei, cache em 1TB de disco, fica mais eficiente.

maximum_object_size 4 MB

O tamanho máximo que um objeto pode ter para ser armazenado

cache_dir aufs /media/proxy249/cache 100 16 256

Onde o cache será armazenado, atenção aqui, o importante é se você usar ufs, aufs ou diskd, todos os 3 funcionam mais ou menos da mesma forma, a diferença é que aufs e diskd trabalham com processos separados para fazer as operações de I / O no disco rígido e evite que os processos do squid travem durante essas operações, além do diskd você pode especificar o número de threads que você terá para esta tarefa. Eu recomendo aufs se você tiver uma boa equipe.

Tamanho 100 (megabytes), você pode colocar 100000 é quase 100GB depende de sua disponibilidade. 16 é o número de pastas e 256 é o número de subpastas. Você pode tocar com os dois valores dependendo da velocidade dos seus discos e de quantos recursos você possui.


cache_swap_low 90
cache_swap_high 95

Essas opções são os valores de substituição do objeto, é o valor mínimo e máximo como marca d'água de acordo com o squid, onde esses números estão em porcentagem (%), e em um cache muito pequeno, 5% como este agora seriam digamos 300 objetos por segundo , mas em caches muito grandes, estaríamos falando de milhares de MB

Bem, aí deixo-vos, por agora, comenta E também leve em consideração aqueles que me disseram que não podiam armazenar em cache e filtrar páginas https (SSL) no squid 3.5 ou superior, em breve trarei para vocês, fiquem ligados neste blog.


11 comentários, deixe o seu

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Eng. José Albert dito

    Excelente complemento à primeira parte!

    Existe muita literatura sobre o Squid, mas chegar ao ponto em suas opções mais práticas com suas respectivas explicações e possíveis cenários de uso real nem sempre estão à mão!

    Como sempre, estou ansioso para ver a terceira parte!

    1.    Brody Dalle dito

      Obrigado pelo seu comentário. Está correto, uma explicação concisa de todos os elementos relevantes e algumas configurações de práticas recomendadas. No entanto, estou sempre atento aos seus comentários e experiências.

  2.   Artus dito

    Olá, tenho um problema com as atualizações do Windows e antivírus. Tenho aproximadamente 120 pc na minha instituição. Você poderia me dar uma ideia de como melhorar essa situação. Obrigado pela ajuda e parabéns pelo artigo.

    1.    Brody Dalle dito

      Olá, obrigado por participar .. bom se eu puder te ajudar, mas explique bem qual é o seu problema, você não consegue baixar as atualizações? Você colocou proxy nas opções de Internet e o mesmo nas opções de proxy do seu navegador? Você verificou as portas? Ou deseja armazenar essas atualizações em cache?

      1.    Artus dito

        O que eu preciso é que cada vez que um computador baixe uma atualização do windows ou antivírus, ela fique no cache por um período de cerca de um mês, dessa forma eu gostaria de economizar largura de banda, já que todas as manhãs todas as vezes todos os computadores começam a baixar as mesmas atualizações de cada um e a conexão satura.

        Obrigado por sua ajuda.

    2.    Mario dito

      Um servidor com Squid funciona, uma vez que são simples downloads http não criptografados. Outras soluções para cache são WSUS e Altiris, normais nas empresas.

      1.    Artus dito

        Obrigado, Mario, vou manter isso em mente.

    3.    Brody Dalle dito

      ok pronto, entendi, verifique este link. http://wiki.squid-cache.org/SquidFaq/WindowsUpdate. para armazenar o antivírus em cache, você deve saber de onde as atualizações são baixadas e em que extensão (exemplo .exe) e armazená-lo em cache ...

  3.   Artus dito

    Obrigado por sua ajuda.

  4.   Erick dito

    Bom dia amigos, vocês poderiam me apoiar com meu caso. Como eu tenho o squid 2.7 .STABLE9 em um debian 6, e tenho tudo configurado e ao montar em um ambiente de 10 pc, recebo e-mail normal, o problema é quando montei para 90 pc, só dura alguns segundos funcionando e daí todo mundo está eles ficam sem internet. Você poderia me apoiar?

  5.   JOSÉ RIVAS dito

    Excelente explicação, básica mas muito clara e precisa. Pessoalmente, a melhor explicação que consegui ler.
    Eu tenho uma pergunta, é possível armazenar em cache aplicativos Android, como apk e xapk?
    E qual seria a forma correta de configurar o cache dinâmico seja qual for a origem dos arquivos?
    Eu uso o pfSense 2.4.5.