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

Saul Figueiredo saulfelipecf em gmail.com
Segunda Fevereiro 6 16:57:24 BRST 2012


Em 2 de fevereiro de 2012 10:55, Saul Figueiredo
<saulfelipecf em gmail.com> escreveu:
> Em 2 de fevereiro de 2012 10:31, Marcelo Gondim
> <gondim em 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 em 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 em 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 em gmail.com
> saul-felipe em hotmail.com
>
> Cel.: (31) 9647-7859
> Skype: saulfelipe



Alguém então teria mais alguma dica?


-- 
"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 em gmail.com
saul-felipe em hotmail.com


Mais detalhes sobre a lista de discussão freebsd