Desempenho de Cache do Squid
Pessoal, tenho um provedor aqui com uns 400 clientes, média ON diária de uns 150 clientes. Uso uma RB800 para o controle de banda e MAC, com redirect de proxy (direto sem intermedio do web cache do mk) numa maquina dedicada para um proxy Squid no Debian.
Sistema:
Debian Linux proxy 2.6.38-2-amd64 #1 SMP Sun May 8 13:51:57 UTC 2011 x86_64 GNU/Linux
Configuração da Maquina Servidora:
Link da Maquina: 3 ADSLs Modo PCC Mikrotik - 1x 8 Mbps e 2x 4 Mbps
2x Processadores
Intel(R) Core(TM)2 Duo CPU E7400@ 2.80GHz
cache size 3072 KB
2x HDs Samsung 320GB somados em RAID Striping
Desempenho no hdparm: (com o squid rodando)
Timing buffered disk reads: 614 MB in 3.01 seconds = 204.25 MB/sec
8GB RAM DDR2 800 Dual Channel
cache_mem 2GB
maximo objeto memoria = 2 MB
maximo objeto em disco = 32MB
250GB de cache de disco - sistema diskd
cache_dir diskd /var/spool/squid 250000 64 256 Q1=64 Q2=72
memory_replacement_policy heap GDSF
cache_replacement_policy heap LFUDA
demais configuracoes do squid sao as padroes
Aqui um grafico do MRTG do cache HIT do meu squid:
http://sgcu.dyndns.org:8090/link/proxy.html
Aqui o grafico de uso dos meus links:
http://sgcu.dyndns.org:8090/link/
Apos 10 dias de uso, tenho 70GB de cache de disco e no momento 4GB de RAM em utilizacao.
Abaixo informacoes do comando squidclient -p 3128 mgr:info
Connection information for squid:
Number of clients accessing cache: 2
Number of HTTP requests received: 6105418
Number of ICP messages received: 0
Number of ICP messages sent: 0
Number of queued ICP replies: 0
Number of HTCP messages received: 0
Number of HTCP messages sent: 0
Request failure ratio: 0.00
Average HTTP requests per minute since start: 1262.5
Average ICP messages per minute since start: 0.0
Select loop called: 128409021 times, 2.260 ms avg
Cache information for squid:
Request Hit Ratios: 5min: 34.5%, 60min: 36.4%
Byte Hit Ratios: 5min: 17.1%, 60min: 18.5%
Request Memory Hit Ratios: 5min: 33.2%, 60min: 36.1%
Request Disk Hit Ratios: 5min: 35.1%, 60min: 33.4%
Storage Swap size: 66424320 KB
Storage Mem size: 2047956 KB
Mean Object Size: 20.36 KB
Requests given to unlinkd: 260
Median Service Times (seconds) 5 min 60 min:
HTTP Requests (All): 0.39928 0.39928
Cache Misses: 0.49576 0.55240
Cache Hits: 0.00562 0.00286
Near Hits: 0.42149 0.33943
Not-Modified Replies: 0.00000 0.00000
DNS Lookups: 0.22276 0.23291
ICP Queries: 0.00000 0.00000
Resource usage for squid:
UP Time: 290158.425 seconds
CPU Time: 3640.924 seconds
CPU Usage: 1.25%
CPU Usage, 5 minute avg: 1.78%
CPU Usage, 60 minute avg: 1.94%
Process Data Segment Size via sbrk(): 3313480 KB
Maximum Resident Size: 13400400 KB
Page faults with physical i/o: 9
Memory usage for squid via mallinfo():
Total space in arena: -880824 KB
Ordinary blocks: -881559 KB 629 blks
Small blocks: 0 KB 0 blks
Holding blocks: 45084 KB 3 blks
Free Small blocks: 0 KB
Free Ordinary blocks: 734 KB
Total in use: -836475 KB 100%
Total free: 734 KB 0%
Total size: -835740 KB
Memory accounted for:
Total accounted: 2900451 KB
memPoolAlloc calls: 911542535
memPoolFree calls: 895689561
File descriptor usage for squid:
Maximum number of file descriptors: 1024
Largest file desc currently in use: 862
Number of file desc currently in use: 811
Files queued for open: 0
Available number of file descriptors: 213
Reserved number of file descriptors: 100
Store Disk files open: 0
IO loop method: epoll
Internal Data Structures:
3307731 StoreEntries
369453 StoreEntries with MemObjects
369359 Hot Object Cache Items
3262311 on-disk objects
Gostaria de compartilhar com voces todos essas informacoes acima, se estou com um bom proxy configurado ou se ha algo para melhorar a taxa de hits. So lembrando que nao tenho interesse algum em solucoes como ThunderCache, quero apenas o squid mesmo, algum ajuste fino de suas configuracoes apenas. Pois pelo que vi, tenho tanto de disco como de memoria uma taxa de 30% de sucesso em hits, isso eh muito ou ha algo ainda para ajustar?
Estou aberto a sugestoes. Abracos a todos da comunidade.
Re: Desempenho de Cache do Squid
Bom dia,
Por que "cachear" arquivos de no máximo 32MB?
Sempre deixo maior, pois muitos vídeos, programas, arquivos de atualização do Windows, dentre outros, quase sempre ultrapassam 32MB.
Re: Desempenho de Cache do Squid
Site com dicas espetaculares, pena ser em malaio:
Squid Proxy
Seguir o passo a passo do post:
Squid Proxy: PROXY UBUNTU 10.10 64 bit dengan squid 2.7 stable9 with pacth cache video youtube
e realmente funciona, mas no caso como nao achei o fonte do squid com o patch referido, usei o link abaixo para fazer o patch manual:
ConfigExamples/DynamicContent/YouTube - Squid Web Proxy Wiki
Estudando um pouco dah para fazer tudo o que o thundercache faz usando somente o squid e com um desempenho espetacular, com a vantagem do gerenciamento de memoria melhor do squid.
Obs: Uso ubuntu 11.04 server 64bits
Para conseguir os fontes do squid:
sudo apt-get source squid
Re: Desempenho de Cache do Squid
Citação:
Postado originalmente por
MarceloGOIAS
Bom dia,
Por que "cachear" arquivos de no máximo 32MB?
Sempre deixo maior, pois muitos vídeos, programas, arquivos de atualização do Windows, dentre outros, quase sempre ultrapassam 32MB.
Sim, mas como disse eu não uso soluções de cache dinamico, por isso deixei em 32MB. Com a dica logo abaixo, se der certo ae sim penso em 128MB e ate um cache de disco maior, ja que tenho memoria suficiente para indexa-lo.
Citação:
Postado originalmente por
amaia
Eh justamente isso que procuro, um ajuste fino do Squid para cache dinamico, sem solucoes de terceiros.
Mas e pela atual configuracao, que acharam o HIT Rate está bom?
Hoje completa 11 dias e em termos brutos chegou a 2,5 Mbps de economia de banda (veja grafico) com 21 GB de dados economizados.
Info do ifconfig:
RX bytes:159251374955 (148.3 GiB) TX bytes:182163021875 (169.6 GiB)
Re: Desempenho de Cache do Squid
Bom, não sou muito de postar em forum não, mas vamos lá!
Só a nivel de informação o squid consome 14Mb de memoria para cada GB de cache_dir então o seu squid vai estar consumindo 3.5 GB só para indexar o disco quando ele estiver cheio, mas está bom pela quantidade de memoria que você tem, o ideal é que você tenha um cache_dir que demore mais de 1 Mês pra ficar cheio, já que quanto mais tempo um arquivo leva em cache, maior a probabilidade de você conseguir um HIT nele, e pelo andar da carruagem o seu vai levar +- isso já que já tem 11 dias rodando, agora aconselho que para melhorar o proxy junto com as politicas que setou em memory_replacement_policy e cache_replacement_policy efetuar as seguintes configurações:
Setar o tamanho maximo de objeto em disco para algo em torno de 64MB e 128MB. Pelo tamanho do cache_dir pode usar 128Mb sem problemas.
Setar o tamanho maximo de objeto em memoria para 128 KB no maximo, mas aconselho colocar 64 KB, afim de aumentar o "Request Memory Hit Ratios" que é a quantidade de HITS solicitados da memoria e diminuir o a porcentagem de HITS de arquivos solicitados do disco "Request Disk Hit Ratios", já que o tamanho medio dos arquivos do seu cache está em 20 KB aproximadamente e normalmente a maior parte dos arquivos da internet são realmente pequenos, e como o disco é muito mais lento que a memoria ram, então é interessante que os arquivos pequenos que são muito mais numerosos sejam pegos da memoria e o sistema só vá em disco para arquivos maiores. Com isso vai perceber que o "Median Service Times" principalmente o "HTTP Requests (All)" deve baixar um bocado, deve ficar uns 0.25 acredito que até menos, nos teste que fiz com o Lusca cache recompilado para não usar o ulinkd consigo service times na casa dos 0.14, não vou pedir para aumentar o cache_mem por que nos meus testes com esse tamanho de cache_dir o squid vai começar a fazer swap de memoria quando o cache_dir estiver cheio, e 2GB de cache_mem e 250GB de cache_dir é um bom balanço para o que quer.
Para aumentar o Hit Rate e o Byte Rate de forma segura aconselho a usar os refresh_patterns retirados do site abaixo:
Linux.com :: Speed up your Internet access using Squid's refresh patterns
Os que o amigo passou acima, realmente consegue milagres, mas como milagres não existem, você no final vai ter mais dor de cabeça com refresh_patterns tão agressivos, falo por experiencia propria, já utilizei os mesmo e foi só problemas, no hotmail e mais um bando de site ai que aparecia o que o ultimo usuario tinha puxado da rede, isso quando não o login, e ou a caixa de entrada do e-mail do ultimo usuario, loucura total! rs
Bom com isso ai que passei deve conseguir um Hit rate de 40%-45%, sendo que uns 55% desses hits devem ser memory hits e um byte Rate na casa dos 25%-35% isso depois do cache já rodando a algum tempo, mas vai sentir a mudança no squid logo nos primeiros dias.
Dependendo da versão do Squid você pode usar um storeurl_rewriter pro youtube e ganhar mais uns % a mais e até passar de 50% de byte rate dependendo do uso de sua rede.
Se for fazer as alterações, se poddivel poste o feedback das alterações se for efetuar, e qualquer coisa estou no e-mail [email protected].
Abraços,
Anderson Aráujo.
Re: Desempenho de Cache do Squid
Bom, não sou muito de postar em forum não, mas vamos lá!<br><br>Só a
nivel de informação o squid consome 14Mb de memoria para cada GB de
cache_dir então o seu squid vai estar consumindo 3.5 GB só para indexar o
disco quando ele estiver cheio, mas está bom pela quantidade de memoria
que você tem, o ideal é que você tenha um cache_dir que demore mais de 1
Mês pra ficar cheio, já que quanto mais tempo um arquivo leva em cache,
maior a probabilidade de você conseguir um HIT nele, e pelo andar da
carruagem o seu vai levar +- isso já que já tem 11 dias rodando, agora
aconselho que para melhorar o proxy junto com as politicas que setou em
memory_replacement_policy e cache_replacement_policy efetuar as
seguintes configurações:<br>
<br>
Setar o tamanho maximo de objeto em disco para algo em torno de 64MB e
128MB. Pelo tamanho do cache_dir pode usar 128Mb sem problemas.<br><br>Setar
o tamanho maximo de objeto em memoria para 128 KB no maximo, mas
aconselho colocar 64 KB, afim de aumentar o "Request Memory Hit Ratios"
que é a quantidade de HITS solicitados da memoria e diminuir o a
porcentagem de HITS de arquivos solicitados do disco "Request Disk Hit
Ratios", já que o tamanho medio dos arquivos do seu cache está em 20 KB
aproximadamente e normalmente a maior parte dos arquivos da internet
são realmente pequenos, e como o disco é muito mais lento que a memoria
ram, então é interessante que os arquivos pequenos que são muito mais
numerosos sejam pegos da memoria e o sistema só vá em disco para
arquivos maiores. Com isso vai perceber que o "Median Service Times"
principalmente o "HTTP Requests (All)" deve baixar um bocado, deve ficar
uns 0.25 acredito que até menos, nos teste que fiz com o Lusca cache
recompilado para não usar o ulinkd consigo service times na casa dos
0.14, não vou pedir para aumentar o cache_mem por que nos meus testes
com esse tamanho de cache_dir o squid vai começar a fazer swap de
memoria quando o cache_dir estiver cheio, e 2GB de cache_mem e 250GB de
cache_dir é um bom balanço para o que quer. <br>
<br>
Para aumentar o Hit Rate e o Byte Rate de forma segura aconselho a usar os refresh_patterns retirados do site abaixo:<br>
<br>
http://www.linux.com/archive/feature/153221<br><br>Os que o amigo passou
acima, realmente consegue milagres, mas como milagres não existem, você
no final vai ter mais dor de cabeça com refresh_patterns tão
agressivos, falo por experiencia propria, já utilizei os mesmo e foi só
problemas, no hotmail e mais um bando de site ai que aparecia o que o
ultimo usuario tinha puxado da rede, isso quando não o login, e ou a
caixa de entrada do e-mail do ultimo usuario, loucura total! rs<br>
<br>
Bom com isso ai que passei deve conseguir um Hit rate de 40%-45%, sendo
que uns 55% desses hits devem ser memory hits e um byte Rate na casa dos
25%-35% isso depois do cache já rodando a algum tempo, mas vai sentir a
mudança no squid logo nos primeiros dias.<br><br>Dependendo da versão
do Squid você pode usar um storeurl_rewriter pro youtube e ganhar mais
uns % a mais e até passar de 50% de byte rate dependendo do uso de sua
rede.<br><br>Se for fazer as alterações, se possivel poste o feedback
das alterações que for efetuar, e qualquer coisa estou no e-mail
[email protected].<br><br><br>Abraços,<br><br><br>Anderson Aráujo.
Re: Desempenho de Cache do Squid
Obrigado pelas dicas, eu ja estava pensando em colocar somente 32K no maior objeto de memória, e de disco colocarei 128MB. Irei fazer uns testes com esses refreshs ae, ve se muda algo ou se so ira dar dor de cabeça. Quanto a cache de disco, acho que não terei problemas pois como postei acima os hds somados em raid ta dando 200 MB/s de leitura.
Re: Desempenho de Cache do Squid
Opa. Os refresh_patterns do site que passei acima pode utilizar sem problemas, na verdade tem outras otimizações de refresh_patterns, mas ai é coisa de analisar site a site, caso a caso.
Em relação aos discos, o indicado é trabalhar com eles em Jbod mesmo, e deixar o squid controlar o acesso, pois se houver uma falha você vai perder 50% do cache utilizando 2 hds, e não 100% em caso de falha do raid 0. O item mais importante para o squid no uso do disco é o access time, que para hds sata de 7200rpm fica na casa dos 15ms aproximadamente, com essa maquina e seguindo as recomendações que passei, o seu cache dá pra atender até uns 1200 usuarios online simultaneos sem problemas, e novamente repito, sempre tenha em mente que deve priorizar o memory hit rate para evitar o acesso a disco na busca de arquivos pequenos, pois diminui em muito a velocidade de atendimento do cache.
Estas dicas que estou te dando, são baseadas em experiencia propria, pois que precisei medir a fundo o desempenho do squid, para implementar um proxy que acredito atender até 10000 clientes, mas no momento será utilizado só para atender 5000 clientes simultaneos. Isso em um Xeon Quad, com 24GB de memoria, 4 HDs SAS de 174GB para cache, e setando 12GB de cache_mem para o Squid, agora estou rodando o Lusca cache para o proxy.
Anderson
Re: Desempenho de Cache do Squid
OK, fiz as modificacoes sugeridas, agora vamos aguardar. Daki uns dias eu posto aqui como ficou. Obrigado.
Re: Desempenho de Cache do Squid
Apos 10 dias e os ajustes finos, tenho direto picos de 2 Mbps de economia de banda. O Link de 16 Mbps esta com 4 Mbps de folga.
No momento sao 130GB de cache com 5GB de memoria em uso.
Foram economizados 47GB em tráfego.
Info de Rede: RX bytes:464704249232 (432.7 GiB) TX bytes:514970476787 (479.6 GiB)
Se olharem o grafico do meu Proxy (esse grafico eh baseado no CACHE HIT)
http://sgcu.dyndns.org:8090/link/proxy.html
Vera que dia apos dia esta aumentando a media de Cache HIT, ou seja, quanto mais tempo rodando sem pausas (reiniciar a maquina por ex) melhor o Proxy, principalmente o de memoria tem uma taxa maior de Hits.
Para finalizar o relatorio do squidclient:
Connection information for squid:
Number of clients accessing cache: 2
Number of HTTP requests received: 17271305
Number of ICP messages received: 0
Number of ICP messages sent: 0
Number of queued ICP replies: 0
Number of HTCP messages received: 0
Number of HTCP messages sent: 0
Request failure ratio: 0.00
Average HTTP requests per minute since start: 1219.9
Average ICP messages per minute since start: 0.0
Select loop called: 382733845 times, 2.219 ms avg
Cache information for squid:
Request Hit Ratios: 5min: 37.8%, 60min: 35.2%
Byte Hit Ratios: 5min: 17.2%, 60min: 15.7%
Request Memory Hit Ratios: 5min: 38.1%, 60min: 35.7%
Request Disk Hit Ratios: 5min: 28.1%, 60min: 33.9%
Storage Swap size: 126890248 KB
Storage Mem size: 2559876 KB
Mean Object Size: 22.33 KB
Re: Desempenho de Cache do Squid
Esta usando os refresh_patterns que indiquei? Me diga como esta os access time do squid, o http all diminuiu?Anderson
Re: Desempenho de Cache do Squid
Sim. Estou usando o que vc passou e diminuiu consideravelmente. De 0.39 esta assim agora:
Median Service Times (seconds) 5 min 60 min:
HTTP Requests (All): 0.23230 0.22004
Cache Misses: 0.35832 0.37825
Cache Hits: 0.00000 0.00865
Near Hits: 0.23230 0.17711
Not-Modified Replies: 0.00000 0.00000
DNS Lookups: 0.19488 0.19488
ICP Queries: 0.00000 0.00000
Re: Desempenho de Cache do Squid
Pessoal, vim aqui atualizar voces, hoje completo 2 meses do Proxy rodando sem pausas.
Vamos aos fatos:
Tenho no momento 380GB de cache (limite de 400GB)
Uso de memoria em 7300 MB (3GB cache de transito e 4,3GB de indice do squid)
Baixados 1,6 TB com envio de 2 TB (economia de 400GB ou 6 GB diarios)
Média de 2 Mbps com picos de 3,6 Mbps de banda economizada diariamente.