[FUG-BR] Tuning kernel Apache
Paulo Henrique BSD Brasil
paulo.rddck em bsd.com.br
Segunda Novembro 28 18:15:18 BRST 2011
Em 28/11/2011 17:50, Leonardo Augusto escreveu:
> Ummm essa questão(ao meu ver), envolve vários fatores, espero poder te
> ajudar te indicando a observar alguns detalhes:
>
> - overview - fatos - porque dê - pra quê ffeebsd
> -----------------------------------------------------------------------------------------------------
> - se tunares o freebsd corretamente, muito provavelmente, não obterás
> desempenho melhor de SO (no mesmo hardware, x86) para a aplicacao que
> desejas.
> - mesmo que voce "soque" tudo num servidor apenas, apache, mysql, etc
> - enquanto tens poucos acessos "todo mundo" é "igual" ou "mais rapido"
> que o Freebsd, aparentemente, ehe.
> - agora, quando "tacar" "trocentos" mil hits em cima, aí que a coisa
> começa a se definir, quando o swap(virtual memory) começar a ser
> usado, as máscaras caem.
> - já vi um benchmark do bsd 7.2 com mysql apache e etc, no mesmo
> hardware, em relacao a um linux, na epoca o mais recente tambem.
> até certo ponto(enquanto nao usava-se swap e com xxx conexoes
> simultaneas) o linux era levemente superior ao bsd em desemepenho,
> quando o numero de conexcoes chegou a XX.XXX e o swap comecou a se
> fazer necessario,
> o linux degradou ABSURDAMENTE, VERGONHOSAMENTE, LIXOSAMENTE,
> TOSCAMENTE HORRIVELMENTE NOJENTAMENTE a performance, o cara nem
> conseguia entrar com o ssh na maquina..
> enquanto isso o Freebsd continuou mantendo seu desepenho como o vinha
> fazendo com xx conexoes.. .o ssh entrava normal... e nao parece que
> havia trocentas conexoes na maquina... INCRIVEL.
> - sei que tem varias pessoas aqui que gostam e defendem o linux, mas é
> fato, a VM e a pilha tcp e o IO do bsd sao imbativeis nesse caso.
> - Nao vou citar o nome, mas conheco uma empresa de listas de email
> online, tipo o yahoo groups, que comecou em linux, logo que o
> movimento cresceu, TUDO SENTOU NA GRAXA, foi um desespero total,
> quando a memoria se exauria, o linux travava... os caras iam trocar o
> hardware, ate que decidiram antes testar o freebsd.... ahaha nem teve
> graça, chegava a ter 3000 processos em PERL processando emails
> e a maquina normal.... no mesmo hardware, o linux com 800 processos
> PERL ja sentava e travava.... ficava MUITO LENTO, a rede nao
> funcionava, etc.
> Os caras usam freebsd ate hoje, e enviam mais de 150 milhoes de emails
> por mes !! fora acessos web, mysql etc..
>
> Enfim, poderia ficar o dia inteiro argumentando pq vc deve usar o
> freebsd se pretende ter muitos acessos algum dia, é como vc ter um
> .357 magnum pra caçar rato, é besteira, até o dia que sua familia
> cresce
> e voce precisa caçar um búfalo, um .22 que mata o rato, nem faz
> cócegas no búfalo.
> Voce só vai entender do que o freebsd é faz quando chegar esse momento.
>
> Essa é a minha opiniao baseada na minha experiencia, uso bsd a 13
> anos, ja usei linux antes por 2 anos e SÓ ME LASQUEI com aquela
> tranquera.
> Aprendi UMA VEZ a configurar o freebsd na versao 3.x alguma coisa e
> ate hoje nao mudou nada.... vai configurar um debian, um redhat e um
> suse pra vc ver como é facil, kkkkk (nojento, irritante, tosco
> aarrgggggg)
> Tenho um servidor que comecou no freebsd 6.1, ja fiz upgrade dele até
> o 7.2, desde la nao fiz mais e ele ja esta com uptime com mais de
> 1.100( mil e cem ) dias....
>
> Bom, mas chega de bla bla bla pra argumentar pq eu acho que vc esta
> fazendo uma boa escolha em usar freebsd, de olhos fechados..
>
> Agora vou dar minhas dicas diretas sobre o que eu acho que voce deve
> tomar atencao para configurar seu servidor web.
>
> - meus beans - levando em conta APENAS UM SERVIDOR, rodando tudo nele,
> e nao um cluster ou master slave, isso já seria outra historia.
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> - esqueça virtualização, se quer algo hardcore, instale um bsd
> nativamente no hardware.
> - o hardware depende muito do tipo de aplicacao, algo baseado em mysql
> tipo wordpress ou arquivos estaticos como fotos e downloads ???
> - se for mais textual usando mysql, coloque a maior quantidade de ram
> que puder, 32G por exemplo, num INTEL 64 bits mother de servidor e nao
> desktop pelo amor de deus,
> nao vai me comprar um PC na loja da esquina e querer transformar num servidor.
> - se for muito acesso a fotos e downloads, tente por uma controladora
> dedicada com RAID 10 com um bom cache, acho que hoje nao é mais SCSI e
> sim SAS, isso sai caro.. .mas vale...
> - tente uma placa moderna com FSB 1333
>
> - voce precisa recompilar o kernel, as versoes mais atuais do bsd
> passaram tudo pro SYSCTL as confs que se fazia no kernel, entao o que
> vc deve fazer é tirar tudo que é declaracao
> de hardware nao presente, placas de rede, controladoras, etc, CAPA
> TUDO FORA... de uma pesquisada sobre kernel tunning... sempre se acha
> algumas dicas...
>
> - antes de recompilar o kernel e os ports que ira usar coloque isso no
> /etc/make.conf
>
> CFLAGS= -O2 -pipe -funroll-loops -ffast-math
> COPTFLAGS= -O2 -pipe -funroll-loops -ffast-math
> WITHOUT_X11=yes
> NO_X=yes
>
> - meu sysctl.conf ( pesquise sobre as opcoes, pode melhorar ou
> adicionar algo, os buf ali podem ser tunados segundo o caso )
>
> machdep.hyperthreading_allowed=1
> security.jail.set_hostname_allowed=0
> security.jail.allow_raw_sockets=1
> security.jail.socket_unixiproute_only=1
> security.jail.sysvipc_allowed=0
> security.jail.enforce_statfs=2
> security.jail.allow_raw_sockets=1
> security.jail.chflags_allowed=0
> kern.maxfiles=65535
> kern.maxfilesperproc=32768
> kern.ipc.somaxconn=8192
> kern.ipc.maxsockbuf=2097152
> kern.ipc.maxsockets=81920
> kern.ipc.shmmax=33554432
> kern.ipc.shmall=32768
> kern.polling.enable=1
> kern.polling.user_frac=50
> vfs.vmiodirenable=1
> vfs.ufs.dirhash_maxmem=67108864
> kern.maxvnodes=500000
> net.inet.ip.check_interface=1
> net.inet.udp.blackhole=1
> net.inet.tcp.blackhole=2 # blackhole pings, traceroutes, etc.
> net.inet.icmp.icmplim=100
> net.inet.ip.fw.dyn_max=4000
> net.inet.tcp.sendspace=65535
> net.inet.tcp.recvspace=32768
> net.inet.udp.recvspace=65535
> net.inet.udp.maxdgram=57344
> net.local.stream.recvspace=65535
> net.local.stream.sendspace=65535
>
> - se voce puder instalar tudo via ports, (atualize o mesmo antes ok)
> eu recomendo, pois se voce usar o portupgrade, pode manter tudo
> atualizado facilmente.
> voce sempre pode dar um make extract a "mecher" nas configuracoes dos
> makes se precisar para tunar algo.
>
> - O apache pode ser usado no bsd de maneiras diferentes, prefor MPM ou
> worker MPM, sao coisas diferentes, pesquise sobre.
> - Se vais usar muito arquivo estatico, tente usar o lighttpd ou o
> nginx no lugar do apache, para arquivos estaticos eles sao mais
> eficientes.
> - se for usar php, utilize o modo com fast-cgi, nao use o mod_php...
> (estufa o apache sem necessidade), voce tem mais beneficios como
> mod_fastcgi e o php
> rodando em separado do apache.
>
> - Se for usar php acessando mysql, tente usar o MEMCACHE, vais te salvar a vida.
>
> - O memcache tambem pode ser usado com o apache para arquivos
> estaticos.. mas acho que nao vale a pena, use o lighttpd ou o nginx
> pra isso.
>
> - Tunar o mysql tb é muito importante... bem como sua aplicacao nao
> conter erros ridiculos como uma consulta sem indice ou com indice
> errado... nao tem cristo que va resolver teu problema nesse caso.
>
> - O file system default do bsd tambem precisa de alguns ajustes, se
> tiver muitos acessos a arquivos, voce pode tirar fora o softupdates,
> mas o risco nao vale a pena, se tiver uma queda de energia
> podes perder muita coisa, mas o ganho de performance é substancial,
> mas acho que nao seja o teu caso.
> eu apenas tiro fora o esquema de atualizar o last access do arquivo,
> uma bobagem la que da diferenca, tal do "noatime", mude entao no fstap
> e ponha essa opcao na particao onde os arquivos iram ficar.
> Eu deixei assim:
>
> /dev/aacd0s1d /tmp ufs rw,noatime 2 2
> /dev/aacd0s1f /usr ufs rw,noatime 2 2
> /dev/aacd0s1e /var ufs rw,noatime 2 2
>
>
> E assim cara, por aí vai... mas tenha dúvida que o freebsd irá
> suportar bem qualquer extremo que vc venha a ter.
>
> Se eu puder ajudar mais, sinta-se a vontade para me chamar em pvt que
> conversamos sobre o caso.
>
> Ah e nao se esquece que fazer testes com o "ab" a partir de outra
> maquina ajuda muito a vc detectar os gargalos.
> O freebsd por sí só nao vai te resolver, vc tem que setar ele e as
> aplicacoes corretamente, e tudo sobre um hardware condizente e um link
> mais ainda.
> Se nao és sócio de um hosting, te aconselho um datacenter externo,
> tipo nos eua, softlayer é muito bom, uso a 8 anos e NUNCA tive
> problemas,
> te colocam uma maquina a mais em ate 2h se precisar, ja possuem
> solucao pra load balance nativo, etc, etc, etc
>
> Abraço
> Leonardo
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
Nossa que aula !!!
Mail muito bom,
--
"Quando a Morte decide contar uma historia,
A melhor ação que possa fazer é ouvi-la,
e torcer por não ser a sua própria a tal história."
Paulo Henrique.
Analista de Sistemas / Programador
BSDs Brasil.
Genuine Unix/BSD User.
Fone: (21) 9683-5433.
Mais detalhes sobre a lista de discussão freebsd