[FUG-BR] squid lento

João Carlos Mendes Luís jonny em jonny.eng.br
Terça Agosto 28 16:32:30 BRT 2007


Lutieri G. wrote:
> Em 28/08/07, João Carlos Mendes Luís<jonny at jonny.eng.br> escreveu:
>   
>> Abaixo:
>>     
>>> acl sitesthorga url_regex -i "/usr/local/etc/squid/xyz/sitesthorga.txt"
>>> acl sitesthorga_eng url_regex -i "/usr/local/etc/squid/xyz/sitesthorga_eng.txt"
>>> acl msn_chineses url_regex -i gateway.messenger.
>>> acl msn_chineses url_regex -i login.live.com
>>> acl msn_chineses url_regex -i gateway.dll
>>> acl msn_chineses url_regex -i msn.com
>>> acl palavra_radio url_regex -i radio
>>> acl site_biruta url_regex -i birutadosul
>>> acl site_votorantim url_regex -i webmail.votorantim.com.br
>>> acl site_votorantim url_regex -i portal.votoran.com.br
>>> acl site_votorantim url_regex -i portal.votorantim-cimentos.com.br
>>> acl palavra_direito url_regex -i direitodoestado.com
>>> acl malwares url_regex -i "/usr/local/etc/squid/xyz/malware.txt"
>>> acl bloqueados url_regex -i "/usr/local/etc/xyz/xyz/bloqueados.txt"
>>> acl liberados url_regex -i "/usr/local/etc/xyz/xyz/liberados.txt"
>>>
>>>       
>> Experiencia de quem já usou muito o squid: Evite usar milhares de
>> expressoes regulares.
>>
>> Elas consomem CPU.  Se voce puder descrever a regra sem expressao
>> regular, o desempenho será muito melhor
>>
>> Experiencia propria, da pior maneira possível...   :-(
>>
>>     
>>> Volta e meia aparecem mensagens assim no cache.log:
>>> httpAccept: FD 41: accept failure: (53) Software caused connection abort
>>>
>>>
>>> Eu sei que tem bastante regras usando url_regex, mas não pode ser por
>>> causa disso.
>>>
>>>       
>> É sim...   ;-)
>>     
>
> Tá tudo bem... Deixa mais ocupado o processador mas não a ponto de
> demorar pra carregar o logo do google nas estações e gradativamente ir
> piorando.
>   

Foi justamente isso que me aconteceu.  Mas pelo jeito o seu problema 
acontece mais rápido, e também acontece sem as ACLs.

Os pontos em que o squid é mais exigido são a rede e o disco, 
principalmente disco.

> Sem contar que agora, no BSD, eu tenho uma máquina rodando o squid
> muito mais potente do que a que está em produção rodando linux. E no
> linux não apresenta lentidão nenhuma.
>   

O HD é SCSI ou IDE?
>   
>> Ainda: Se voce usou a gnu-regex para compilar, tente tirar.  Se não
>> usou, tente colocar.  O desempenho varia...
>>
>>     
>>> Tenho uma partição de 10Gb pra cache.
>>>
>>>       
>> Mais importante que o tamanho da partição é onde ela está.  Qual o tipo
>> de disco?  Qual a velocidade do disco?  Tem mais alguma partição no
>> disco, ou é exclusivo do squid?
>>
>> Verifique que a partição está com softupdates e montada com noatime.
>>     
>>> Juro que não sei o pq da lentidão. Quando digitou: squidclient
>>> mgr:info me retorna que tem em torno de 40 clientes e jah fica
>>> lento.... Mas no outro servidor antigo tá rodando super bem com 500
>>> usuários.
>>>
>>>       
>> Para aguentar 10G de disco, ele tem que ter uma boa quantidade de RAM
>> não alocada para cache.
>>
>> Veja aqui: http://www.comfsm.fm/computing/squid/FAQ-8.html#ss8.1
>>
>> Importante: Cheque de tempos em tempos e tenha certeza que o squid não
>> está indo para o swap.
>>
>>     
>>> Preciso de ajuda!
>>>
>>>       
>> Outra dica:
>>
>> cache_dir ufs /cache 8000 16 256
>>
>> Tente mudar de ufs para aufs ou ainda melhor, diskd.
>>
>> E altere o tamanho dos diretórios.  Deixe os dois níveis com o mesmo número de entradas.  Pode ser 256/256.  Para calcular o tamanho ótimo, deixe o cache encher, e conte quantos arquivos estão no cache.  Depois tire a raiz cúbica, e escolha um numero inteiro um pouco maior que esse valor.  Motivação: dividir igualmente o número de entradas (ou seja, o tamanho) de cada diretório no path.
>>
>>     
> Estou alterando agora para diskd. Dois diretórios dentro de uma mesma
> partição. Cada um com 4066 MB.  E a partição total tem 10GB. Ficou
> assim:
>
> cache_dir diskd /cache/0 4096 256 256 Q1=72 Q2=62
> cache_dir diskd /cache/1 4096 256 256 Q1=72 Q2=62
>
> Alguma objeção?
>   

Tá ótimo.  De vez em quando monitora o tamanho das filas, para ver se 
tem que aumentar alguma coisa.

> Vou rodar assim, e fazer os cálculos que mencionastes.
>   

Não que isso resolva o seu problema, mas é um lugar para espremer mais 
desempenho.

>   
>> ...
>>
>> Finalmente:
>>
>> httpAccept: FD 41: accept failure: (53) Software caused connection abort
>>
>> Google it, e ache a palavra do desenvolvedor:
>>
>> http://www.squid-cache.org/mail-archive/squid-users/200202/0406.html
>>
>>     
> Já tinha caído aí googling. Me passei e não vi que era um desenvolver
> que tinha escrito. E continuei em busca de uma resposta. Sem contar
> que na versão do linux nunca apresentou essa mensagem. Por isso
> continuei minha busca...
>   

Pode ser que o abort tenha sido conseqüência do problema real.

>> .....
>>
>> Mas em um email seu depois deste:
>>
>> Ontem mesmo removi a autenticação e todas ACL's e continuou com o problema....
>>
>> O mesmo problema?  O uso de CPU do squid deve ter melhorado para bem menos que 50%.
>>
>> ...
>>     
> Sim, o mesmo problema! Apesar de a CPU ter sentido a que tiraram um
> peso, não muito grande, das costas dela, a lentidão continuou.
>   

Mas dessa vez com bastante sobra de CPU, certo?

Voce já disse que o shell continua legal, então descarta minha próxima 
sugestão de problemas no switch (duplex/nao-duplex, por exemplo).

Acima disso, talvez você tenha que aumentar a depuração e descascar 
bit.  Eu iria até o nível do strace/ktrace para achar o problema.

Pergunta: O systat -v não acusa excesso de acesso a disco, acusa?

                                        Jonny

-- 
João Carlos Mendes Luís - Networking Engineer - jonny at jonny.eng.br



Mais detalhes sobre a lista de discussão freebsd