#  > Servidores >  > Servidores de Rede >  >  squid - cache_dir construção ideal

## lucianogf

fala galera, como estão as coisas??

pessoal, me surgiu uma dúvida aqui, qual seria o cache_dir ideal?

temos a seguinte configuração:
cache_dir ufs /var/spool/squid/cache 100 16 256

onde 100 é o tamanho do cache em MB
16 é a quantidade de diretórios pais
256 é a quantidade de diretórios em cada diretório pai

agora vem a dúvida, qual seria o dimencionamento ideal para um bom desempenho???

tamanho x diretórios_pais x diretórios_filhos

e nas configurações do tipo

cache_dir ufs /var/spool/squid/cache01 100 16 256
cache_dir ufs /var/spool/squid/cache02 100 16 256
cache_dir ufs /var/spool/squid/cache03 100 16 256
cache_dir ufs /var/spool/squid/cache04 100 16 256

qual seria a configuração ideal?

acho q me fiz entender  :Smile: 

valeu
&#91;]'s

----------


## alexandrecorrea

varios cache_dir para 1 unico hd.. nao tem diferença...

o que vc pode fazer eh aumentar os diretorios

32 256 por ex...

----------


## lucianogf

aumentando o numero de diretórios irá melhorar o desempenho?

se eu tiver um cache de 10GB, qual configuração terá o melhor desempenho?
16 256
ou
32 256

ou será ainda outra?

----------


## alexandrecorrea

eu uso 32 512

primeiro diretorio.. 32 

e dentro de cada diretorio vai ter 512 diretorios (2 hd scsi de 72gb 15k rpm)

cache de 10gb..

16 256 acho que eh suficiente...

vou procurar onde fiz a conta..

----------


## lucianogf

cara...

penso em maximizar o máximo o desempenho do servidor, por isso gostaria de saber qual seria a construção ideal...

e otra coisa, como são arquivos pequenos, qual seria o melhor tamanho do bloco? 4k, 8k, 16k, 32k ??

sempre usei o padrão q é 8 se nao me engano, mas as aplicações nem sempre usam o padrão..

oq vc usa aí?

----------


## alexandrecorrea

use reiserfs ou xfs ... no sistema de arquivos...

para sistemas scsi.. no cache_dir use aufs ... precisa de um cuidado com os aio_theads ... verifique em horario de pico se da mensagens de erro (queue) .. ai precisa ou elevar o numero de theads ou diminuir.. (nao entendi isso..)

na memoria conserve objetos MENORES (GDSF).. e no hd.. os maiores (lFUDA)

----------


## lucianogf

> use reiserfs ou xfs ... no sistema de arquivos...
> 
> para sistemas scsi.. no cache_dir use aufs ... precisa de um cuidado com os aio_theads ... verifique em horario de pico se da mensagens de erro (queue) .. ai precisa ou elevar o numero de theads ou diminuir.. (nao entendi isso..)
> 
> na memoria conserve objetos MENORES (GDSF).. e no hd.. os maiores (lFUDA)


nao entendeu???

oxente... como vc me passa uma coisa q vc tbm nao entende??? hehehehehe

----------


## alexandrecorrea

no meu caso.. alterei de 16 pra 18.. resolveu . mas lendo documentos.. falam pra abaixar ... que resolve tambem..

agora... o que eh certo ? como funciona ?.. ainda nao tive tempo de ler..

----------


## lucianogf

hehehehe

por isso q estou atrás das respostas...

meu inglês ainda é deficiente, e os manuais bons não são em português...

----------


## lucianogf

cara... 

fiz as seguintes configurações no squid




> cache_mem 750 MB
> 
> cache_swap_low 90
> cache_swap_high 95
> 
> maximum_object_size 10240 KB
> minimum_object_size 0 KB
> 
> maximum_object_size_in_memory 256 KB
> ...


do que eu sempre configuro a única diferença é com relação ao cache_replacement_policy e memory_replacement_policy, sempre deixava como padrão, mas como estou procurando otimizar o desempenho segui suas dicas...

ahh... e aumentei o tamanho dos objetos em memoria e cache

vamu ve no q dá...  :Smile: 

valeu

----------


## alexandrecorrea

maximum_object_size_in_memory 64 KB

deixa assim.. ele coloca mais objetos.. MENORES... evitando consultar o hd por arquivos menores

----------


## lucianogf

é q eu não sei a média de tamanho dos arquivos de internet...

coloquei 256 por causo de arquivos como fotos, q são um pouco maiores

o negócio mesmo era ter uns 8GB de ram, aí sim dava pra ter uma memória boa pro squid.. hehehe

----------


## netosdr

A configuração do squid diz muito sobre a performace do cache.

Considere também:

- Utilizar um hd somente para cache ou/e
- Utilizar um hd SCSI ou SATA (depende do seu orçamento)
- Tenha muita memória RAM ( o squid consome muita memória para rodar bem e ter um bom aproveitamento)
- Utilize reiserfs como sistema de arquivos
- Utilize um filtro de conteúdo externo, não use o squid para tal fim.

Sobre a diretiva cache_dir vc encontra toda a informação em:
http://wiki.squid-cache.org/SquidFaq

Um abraço!

----------


## lucianogf

o camarada..

agradeço as dicas  :Smile: 

mas já tinha elas em mente, a dúvida mesmo era com relação a quantidade de diretórios e a politica de "replacement"

atualmente uso um HD para tudo, mas uma partição separada para o /var

1GB de memória no servidor, e deixo 700MB para o squid

cache_dir diskd /var/spool/squid/cache/ 8192 32 256 Q1=64 Q2=72
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF
maximum_object_size 10240 KB
minimum_object_size 1 KB
maximum_object_size_in_memory 64 KB

valeu

----------


## alexandrecorrea

minimum_object_size 0 KB

----------


## lucianogf

> minimum_object_size 0 KB


então...

ele estava como 0, coloquei como 1 para evitar objetos muitos pequenos no HD

acredito q com isso reduzirei bastante o acesso a disco por causo de arquivos menores q 1K

----------


## netosdr

Aproveitando a deixa, essa política de replacement vale tanto para ufs quanto para diskd?

----------


## lucianogf

sim...

serve tanto pra ufs qto pra diskd

----------


## alexandrecorrea

minimum_object_size 

essa diretiva indica o tamanho minimo q ele vai guardar no cache (seja na memoria ou hd)..

como 60% dos objetos de navegação estao entre 0 e 1k ... economiza mta banda (picos)...

----------


## lucianogf

cara...

acho q esta opção controla apenas o que é gravado no HD, pois para controle de memória existe a diretiva específica para ela, apesar de não existir uma que indique um tamanho minimo de objeto, mas o tamanho máximo existe..

acredito que não exista uma diretiva que controle o tamano minimo pois tanto faz pra memória um objeto de 1K ou de 10K, não afetará fisicamente ela..

----------


## alexandrecorrea

Tag Name minimum_object_size (bytes)

Usage minimum_object_size (bytes)

Description
Objects smaller than this size will NOT be saved on disk. The value is specified in kilobytes, and the default is 0 KB, which means there is no minimum. See maximum_object_size for more information.

----------


## lucianogf

cara...

me diga o que vc entendeu por isso, pois o q está escrito é q objetos com valores menores que o especificado não serão gravados no disco..

então não está controlando o que será gravado na memória... (correto?)

----------


## alexandrecorrea

objetos menores que especificado na diretiva simplesmente nao serao gravados nem na memoria, nem no hd... fazendo acesso direto ao mesmo (usando a internet)..

----------


## lucianogf

cara...

nao me convenceu não... ainda mais que vc me mandou uma coisa que está escrito e dando mais força no q eu disse




> Objects smaller than this size will NOT be saved on *disk*.


(tradução do meu vocabulário)

Objetos menores que este valor NÃO serão salvos no disco.

----------


## alexandrecorrea

eh soh olhar no log !!

vc acessa o arquivo 2 vezes... e

TCP_DIRECT !!! em todos !

----------


## lucianogf

cara...

eu fiz essa configuração ontem eu acho, e percebi uma melhora grande no desempenho do proxy, monitoro as interfaces de rede com o mrtg e a que é ligada aos clientes teve pico muito maior que a ligada na internet

eu não vi essa questão dos logs ainda, mas é bem estranho isso, vc há de convir, justamente pela descrição da opção, nela está explícita que é com relação a gravação em disco..

e tbm tem outra questão, arquivos menores que 1kb geram muito (mas muito) acesso a disco, assim provoca um gargalo no HD

ainda mais que os blocos são de 4K, então cada arquivo desse menor que 4K causa um desperdício grande de espaço tbm... tudo bem que é um espaço quase sem consideração, mas...

----------


## alexandrecorrea

tento como base.. 60 hits..

40 vieram do cache.. 20 da internet !!

para politica de memoria.. utilizo gdsf (mantendo objetos pequenos populares na memoria)

e no hd.. lfuda... (populares grandes no hd)...

----------


## alexandrecorrea

meu squid soh nao ta com mais performance porque estou com problema de memoria...

na consigo comprar memoria pro meu servidor lah na dell !! ai a bosta ta usando quase 2gb swap .. + 2gb de ram..

preciso de +2gb de ram no minimo...

meu squid ta atendendo media de 50 req/s

----------


## lucianogf

cara...

vou fazer um teste na prática aqui...

vou criar alguns arquivos, com tamanhos variados, em um servidor http e acessá-los por aqui e analisar os logs..

farei isso nas duas situações, com o valor 1K e com 0K, daqui a poco posto os resultados...

----------


## alexandrecorrea

okey !! 

minha maquina squid aqui ta assim:

3 hds scsi 15k 73gb
(3 cache_dir 1 para cada hd)
ext3 (vou mudar para reiserfs 4 em breve)..
e vou mudar de aufs para coss !!! (to olhando se ta blzinha e talz)

----------


## alexandrecorrea

usa o rrdtool pra gerar grafico.. o mrtg demora 5 minutos.. o rrd da pra atualizar de 1 em 1 minuto.. (existe patch para mrtg fazer isso)

----------


## lucianogf

> usa o rrdtool pra gerar grafico.. o mrtg demora 5 minutos.. o rrd da pra atualizar de 1 em 1 minuto.. (existe patch para mrtg fazer isso)


sobre o rrdtool eu já li sobre ele, mas nao implementei ainda, mas já pensei em fazer...

cara..

parece que vc realmente está com a razão, mas pela descrição da opção eu estava certo.

fiz os seguintes testes:

criei dois arquivos menor_1k.txt e maior_1k.txt

acessei-os com a opção setada em 1K
o arquivo maior_1k.txt gera log somente no primeiro acesso ou quando aperta F5 para atualizar
o arquivo menor_1k.txt gera log em todos os acessos

opção para 0K:
o arquivo maior_1k.txt continua da mesma forma, log no primeiro acesso ou quando aperta F5
agora o arquivo menor_1k.txt gera log somente no primeiro acesso ou qdo aperta F5

desta forma vi que vc realmente estava com a razão, mas é como disse, a descrição da opção está errada...

agora veio uma duvida, o access.log só gera log de arquivos que são baixados da net? os que estão no cache não é gerado log??

----------


## alexandrecorrea

o access.log registra todo acesso (cache, memoria, direto)

quando vem do HD .. vem como TCP_MISS_HIT (algo assim)

quando vem da memoria .. TCP_MEM_HIT

e quando vem da internet (sem cache) TCP_DIRECT (algo assim)

o meu squid da mto MEM_HIT e MISS_HIT principalmente nos sites mais visitados

uol, orkut, fotolog, etc etc.. isso tem quase que triplicado meu link !!! 

se nao fossem os P2P ... meu link estaria sobrando mtooooo mais..

----------


## lucianogf

cara...

descobri aqui pq não esta aparecendo nos logs, neste micro que fiz os testes estou usando o squid 2.6, e ele tem algumas mudanças com relação ao 2.5, mas acessei um outro servidor com squid 2.5 e pude ver os logs q vc disse... :/

de qualquer forma vou alterar o valor da opção para 0K e analizar os gráficos...

se vc manjar bem de gráficos vou precisar da sua ajuda, pois não estou conseguindo gerar outro arquivo squid.cfg com o cfgmaker.. mas isso fica pra outro tópico...

----------


## alexandrecorrea

aqui eu uso o snmpwalk direto... pego os valores. passo para o rrdtool (usando uma ferramenta que o Patrick Brandao/myauth inventou).. ai gero os graficos ...

----------


## lucianogf

cara...

fiz uma contagem no access.log atual e obtive os seguintes dados:




> TCP_MISS - 114.117 ocorrencias
> TCP_IMS_HIT - 81.781 ocorrencias
> TCP_REFRESH_HIT - 19.879 ocorrencias
> TCP_REFRESH_MISS - 1.940 ocorrencias
> TCP_MEM_HIT - 10.985 ocorrencias
> TCP_CLIENT_REFRESH_MISS - 245 ocorrencias
> TCP_DENIED - 87 ocorrencias
> TCP_HIT - 47.355 ocorrencias
> TCP_NEGATIVE_HIT - 1.005 ocorrencias
> TCP_SWAPFAIL_MISS - 2 ocorrencias


veremos o q muda depois desta alteração...

----------


## lucianogf

percebi que aqui não tenho o TCP_DIRECT

esse squid aqui tá com uma média de 16 req/sec

----------


## alexandrecorrea

TCP_MISS = TCP_DIRECT



eu nao gravo o access.log  :Frown: 

to tentando fazer com q o squid nao ggrave em um arquivo.. mas crie um dispositivo virtual onde eu faça

tail -f /dev/squid

ele me mostre o log corrente...

----------


## lucianogf

> TCP_MISS = TCP_DIRECT


já procurei na net os significados destes termos do log do squid mas não encontrei...

TCP_MISS - o que vem direto da net
TCP_MEM_HIT - o que está a memória
no caso o que stá gravado no HD seria o TCP_IMS_HIT ??

----------


## lucianogf

vi agora... será o TCP_HIT ?

----------


## alexandrecorrea

isso !! TCP_HIT eh do hd(cache)

----------


## lucianogf

> okey !! 
> 
> minha maquina squid aqui ta assim:
> 
> 3 hds scsi 15k 73gb
> (3 cache_dir 1 para cada hd)
> ext3 (vou mudar para reiserfs 4 em breve)..
> e vou mudar de aufs para coss !!! (to olhando se ta blzinha e talz)


cara...

vc tem um cache total de 210GB ?

qual a vantagem do "coss" no cache_dir ?? ele é melhor que diskd ??

----------

