[FUG-BR] Utilização de SWAP no FreeBSD 64bits proxy squid

Joao Rocha Braga Filho goffredo em gmail.com
Terça Fevereiro 7 18:52:04 BRST 2012


2012/2/6 Saul Figueiredo <saulfelipecf at gmail.com>:
> Em 2 de fevereiro de 2012 10:55, Saul Figueiredo
> <saulfelipecf at gmail.com> escreveu:
>> Em 2 de fevereiro de 2012 10:31, Marcelo Gondim
>> <gondim at bsdinfo.com.br> escreveu:
>>> Em 02/02/2012 10:04, Saul Figueiredo escreveu:
>>>> Olá a todos,
>>>>
>>>> Essa é minha primeira participação na lista, espero poder contribuir
>>>> muito com essa comunidade, mais com soluções do que com problemas
>>>> espero.
>>>>
>>>> Tenho alguns servidores proxy onde trabalho, todos FreeBSD. Observei
>>>> que todas as maquinas estavam rodando o FreeBSD 8.2 i386 (versão
>>>> 32bits) e que uma delas, uma maquina Dell, tinha um processador que da
>>>> suporte a sistemas 64bits.
>>>>
>>>> Eu estava tendo alguns problemas de memoria com a máquina,  cerca de 6
>>>> mil usuários utilizam aquela maquina como proxy (a carga é balanceada
>>>> entre os 3), e as vezes o squid simplesmente reiniciava do nada.
>>>> Pesquisei um pouco e vi que meu problema era memoria: Eu utilizo um
>>>> CacheMem 3072 MB e a maquina reconhecia 3254 MB de RAM, O sistema
>>>
>>> Saul o uso do CacheMem não é como você está colocando, existe uma
>>> formula para isso. As pessoas costumam confundir isso e aí socam valores
>>> altos no CacheMem.
>>> Inclusive está relacionado com o cache_dirs. Abaixo a recomendação do
>>> próprio pessoal do Squid:
>>>
>>>
>>>    How much memory do I need in my Squid server?
>>>
>>> As a rule of thumb on Squid uses approximately 10 MB of RAM per GB of
>>> the total of all cache_dirs (more on 64 bit servers such as Alpha), plus
>>> your cache_mem setting and about an additional 10-20MB. It is
>>> recommended to have at least twice this amount of physical RAM available
>>> on your Squid server. For a more detailed discussion on Squid's memory
>>> usage see the sections above.
>>>
>>> Ex: vamos dizer que você tenha no cache_dirs definido 100G de espaço.
>>> Logo em sistemas 32bits squid usa uns 10Mb por giga em 64bits uns 16Mb
>>> por giga. Vamos dizer que no seu cache_mem esteja com 256M logo a
>>> fórmula seria algo assim:
>>>
>>> - 100Gb de espaço no cache_dirs
>>> - 10Mb por cada giga dos 100Gb do cache_dirs em sistemas 32bits, em
>>> 64bits eu colocaria 16Mb por cada giga.
>>> - 256Mb de cache_mem
>>> - 20Mb adicional sugerido para o cálculo.
>>>
>>> Conta:
>>>
>>> 100 * 10 = 1000Mb + 256M + 20M = 1276Mb  onde vc deveria ter de ram pelo
>>> menos o dobro desse valor, ou seja, você teria que ter na máquina 2552Mb.
>>>
>>> Repare que se você aumenta um valor o outro também é ajustado e eles são
>>> interligados.
>>>
>>>
>>>
>>>> rodava apertado com pouco menos de 200MB de RAM e quando a carga do
>>>> servdor subia, derrubava o squid e o inicializava novamente.
>>>>
>>>> Percebi que era ora de atualizar a memoria deste servidor. Enquanto as
>>>> memorias eram emcomendadas na dell (+4GB) , peguei este servidor e
>>>> instalei um FreeBSD 8.2 só que 64 Bits, ao fim da instalação, a
>>>> maquina reconheceu os 4GB de RAM.
>>>>
>>>> Vejam a configuração atual:
>>>>
>>>> proxy4# muse -m
>>>> kvm_open: kvm_nlist: No such file or directory
>>>> kvm_open: kvm_nlist: No such file or directory
>>>> Active:     2840.688 MB
>>>> Inactive:    341.574 MB
>>>> Wired:       542.820 MB
>>>> Reserved:      5.324 MB
>>>> Cache:       111.945 MB
>>>> Kernel:        0.133 MB
>>>> Interrupt:     0.008 MB
>>>> Buffer:      417.938 MB
>>>>
>>>> Total:      3939.402 MB
>>>> Free:        101.762 MB
>>>>
>>>> Swap:      8192MB
>>>>
>>>> -------------------------------------------------
>>>>
>>>> proxy4# sysctl -a | egrep -i 'hw.machine|hw.model|hw.ncpu'
>>>> hw.machine: amd64
>>>> hw.model: Intel(R) Xeon(R) CPU            5130  @ 2.00GHz
>>>> hw.ncpu: 4
>>>> hw.machine_arch: amd64
>>>>
>>>> --------------------------------------------------
>>>>
>>>> proxy4# uname -a
>>>> FreeBSD proxy4 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Thu Feb 17 02:41:51
>>>> UTC 2011     root at mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC
>>>> amd64
>>>>
>>>> ---------------------------------------------------
>>>>
>>>> Agora continuo usando 3072 MB de CacheMem para o squid, e sobra um
>>>> pouco mais de memoria para o sisetma em sí utilizar.
>>>>
>>>> Porem venho notado algumas coisas, que achei bem estranho:
>>>>
>>>> 1 - Quando faço alguma alteração no squid, e dou um squid -k
>>>> reconfigure demora cerca de 3 a 4 minutos para o squid compilar e
>>>> voltar a navegar, o que não acontecia quando eu tinha a versão 32
>>>> bits;
>>>>
>>>> 2 - A Utilização da SWAP passa a ser frequente agora. Antes no FreeBSD
>>>> 32bits, mesmo com falta de memoria, ele não usava sequer 100MB de
>>>> swap, já hoje, ele utiliza mais de 50% da partição de swap e olha que
>>>> eu tenho 8192MB de Swap.
>>>> Vejam no link da imagem a baixo o como fica o meu HTOP:
>>>> http://illuminaticorp.org/Util_swap.jpg
>>>>
>>>> Isso é normal ?
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> "Deve-se aprender sempre, até mesmo com um inimigo."
>>>> (Isaac Newton)
>>>>
>>>> Atenciosamente,
>>>> Saul Figueiredo
>>>> Analista FreeBSD/Linux
>>>> Linux Professional Institute Certification Level 1
>>>> Linux Professional Institute Certification Level 2
>>>> -------------------------
>>>> Histórico: http://www.fug.com.br/historico/html/freebsd/
>>>> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>>>>
>>>
>>> -------------------------
>>> Histórico: http://www.fug.com.br/historico/html/freebsd/
>>> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>>
>>
>>
>> Marcelo,
>> Obrigado pela resposta.
>> Eu não conhecia muito bem a formula obrigado por envia-la.
>>
>> antes , quando eu montei esse servidor pela primeira vez, eu colocava
>> um cache_mem de 255 MB com um cache dir de 19GB.
>>
>> e ai, quando colocava a maquina em produção, quando atingia um certo
>> numero de conexões 7000 conexões, o squid restartava sozinho. Daí fui
>> alterando para cima o valor até parar, até 2048 MB, que foi quando
>> parou, aí então achei que quanto mais, melhor.
>>
>> E essa demora para voltar do squid -k reconfigure? antes de formatar
>> era tão rapido...
>>
>> Segue o meu squid.conf, substituí meu dominio pela palavra dominio.
>>
>> -----V
>>
>> http_port 3128
>>
>> visible_hostname proxy4.servidor.dominio
>>
>> cache_mem 3072 MB
>> cache_dir ufs /sarg/cache/ 19000 16 256
>> coredump_dir /sarg
>>
>> access_log /sarg/logs/access.log
>> cache_log /sarg/logs/cache.log
>> cache_store_log none
>> logfile_rotate 15
>> cache_mgr postmaster at dominio.com.br
>> error_directory /usr/local/etc/squid/errors/pt-br
>>
>>
>> #Faz o balanceamento nos 2 webshields
>> cache_peer 200.216.236.2 parent 8080 0 no-digest no-query round-robin weight=1
>> cache_peer 200.216.236.36 parent 8080 0 no-digest no-query round-robin weight=1
>>
>> #Faz o balanceamento de autenticacao nos 2 ADs
>> auth_param ntlm program /usr/local/libexec/squid/ntlm_smb_lm_auth -b
>> dominio/servidor02 dominio/servidor01
>> auth_param ntlm children 100
>> auth_param ntlm keep_alive off
>> authenticate_ip_ttl 3600 seconds
>>
>> #auth_param basic program /usr/local/libexec/squid/ntlm_smb_lm_auth
>> dominio\\servidor02
>> auth_param basic program /usr/local/libexec/squid/ntlm_smb_lm_auth -b
>> dominio/servidor02 dominio/servidor01
>> auth_param basic children 2
>>
>> hierarchy_stoplist cgi-bin ?
>> acl QUERY urlpath_regex cgi-bin \?
>> no_cache deny QUERY
>>
>> refresh_pattern ^ftp:           1440    20%     10080
>> refresh_pattern ^gopher:        1440    0%      1440
>> refresh_pattern .               0       20%     4320
>>
>> #Regras padroes de seguranca
>> acl all src
>> acl manager proto cache_object
>> acl localhost src 127.0.0.1/32
>> acl to_localhost dst 127.0.0.0/8
>> acl SSL_ports port 443 563 2096
>> acl Safe_ports port 80 81 82 84 21 443 563 4443 70 210 1025-65535 280
>> 488 591 777 2096
>> acl portas port 7777 8080 8888 8000 1041 4500 8686 1521 1630 2631 5297 10038
>> acl CONNECT method CONNECT
>> acl senha proxy_auth REQUIRED
>>
>> acl rede_servidor src 10.0.0.0/8
>> acl experti src 192.168.5.0/27
>> acl gmail url_regex -i "/usr/local/etc/squid/regras/gmail.txt"
>> acl usuarios_negados proxy_auth -i
>> "/usr/local/etc/squid/regras/usuarios_negados.txt"
>> acl ips_dst_liberados dst "/usr/local/etc/squid/regras/ips_dst_liberados.txt"
>> acl dominio src "/usr/local/etc/squid/regras/listaip.txt"
>> acl ips_sem_auth src "/usr/local/etc/squid/regras/ips_sem_auth.txt"
>> acl acesso_sem_auth url_regex -i
>> "/usr/local/etc/squid/regras/acesso_sem_auth.txt"
>> acl twitter url_regex -i "/usr/local/etc/squid/regras/twitter.txt"
>> acl liberados dstdomain "/usr/local/etc/squid/regras/liberados.txt"
>> acl google dstdomain "/usr/local/etc/squid/regras/dominio_google.txt"
>> acl lib_google src "/usr/local/etc/squid/regras/lib_google.txt"
>> acl quiosque dstdomain "/usr/local/etc/squid/regras/dominio_autoatendimento.txt"
>> acl autoatendimento  src "/usr/local/etc/squid/regras/autoatendimento.txt"
>> acl bloqueados url_regex -i "/usr/local/etc/squid/regras/bloqueados.txt"
>> acl block_195 src "/usr/local/etc/squid/regras/block_195.txt"
>> acl permitidos_direct url_regex -i
>> "/usr/local/etc/squid/regras/permitidos_direct.txt"
>> acl urls_msn url_regex -i "/usr/local/etc/squid/regras/urls_msn.txt"
>> acl ips_msn src "/usr/local/etc/squid/regras/ips_msn.txt"
>> acl servidores src "/usr/local/etc/squid/regras/servidores.txt"
>> acl downloads_bloqueados urlpath_regex
>> "/usr/local/etc/squid/regras/downloads_bloqueados.txt"
>>
>>
>> http_access allow acesso_sem_auth
>> http_access deny manager !localhost
>> http_access deny CONNECT !SSL_ports
>> http_access deny !Safe_ports
>>
>> http_access deny bloqueados
>> http_access deny downloads_bloqueados
>> http_access deny block_195
>>
>> http_access allow liberados
>> http_access allow servidores
>> http_access allow dominio permitidos_direct
>> #http_access allow gmail
>> http_access allow ips_msn urls_msn
>> http_access allow twitter
>> http_access allow rede_servidor ips_dst_liberados
>> http_access allow lib_google google
>> http_access allow autoatendimento quiosque
>> http_access deny usuarios_negados
>> http_access allow dominio senha
>> #http_access allow dominio
>> http_access deny all
>>
>> miss_access allow rede_servidor
>> miss_access allow experti
>> miss_access deny all
>>
>> always_direct allow permitidos_direct
>>
>> always_direct allow SSL_ports
>> never_direct allow all
>>
>> http_reply_access allow all
>> icp_access allow all
>>
>>
>>
>>
>>
>> --
>> "Deve-se aprender sempre, até mesmo com um inimigo."
>> (Isaac Newton)
>>
>> Atenciosamente,
>> Saul Figueiredo
>> Analista FreeBSD/Linux
>> Linux Professional Institute Certification Level 1
>> Linux Professional Institute Certification Level 2
>> saulfelipecf at gmail.com
>> saul-felipe at hotmail.com
>>
>> Cel.: (31) 9647-7859
>> Skype: saulfelipe
>
>
>
> Alguém então teria mais alguma dica?

Eu começo com o cache_mem baixo, e depois de atingir o estado permanente,
depois que a cache em disco fica cheia, eu vou subindo a cache em memória.

Mas talvez seja melhor começar com o cache em disco e em memória baixo,
tipo 30 GB de disco e 200 MB em memória, e depois vai aumentando.

Uma coisa importante: O Squid NÃO pode sofrer swap, pois aí o desempenho
desaba e o disco será massacrado com uma quantidade enorme de I/O.

Aliás, eu troquei o Squid pelo Lusca, pois tinha um bug chato no squid. Ele
estava com um memory leak, que o fazia consumir cada vez mais memória, e
o resultado era o temido swap do squid.


João Rocha.

>
>
> --
> "Deve-se aprender sempre, até mesmo com um inimigo."
> (Isaac Newton)
>
> Atenciosamente,
> Saul Figueiredo
> Analista FreeBSD/Linux
> Linux Professional Institute Certification Level 1
> Linux Professional Institute Certification Level 2
> saulfelipecf at gmail.com
> saul-felipe at hotmail.com
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd



-- 
"Sempre se apanha mais com as menores besteiras. Experiência própria."

http://jgoffredo.blogspot.com
goffredo at gmail.com


Mais detalhes sobre a lista de discussão freebsd