[FUG-BR] Servidor com load altíssimo
Leonardo Augusto
lalinden em gmail.com
Domingo Julho 8 11:36:29 BRT 2012
Bom Marcelo,
Pelos graficos que voce me mandou, por hora, sao mais de 3000 selects
contra 700 inserts... entao nao sei se foi com ou sem o tal anounce
rodando, mas tem bem mais select que insert.
O que ja vi tambem, é que esse sistema é um sistema opensource, ja
baixei ele pra dar uma olhada, vi que no index tem um select
sinistro la, que o memcache ajudaria muito.
MAS CLARO, TEM UM POREM BEM BOM PRA UM DOMINGO DEMANHA, KKKK
teu "programador" php ta relutante a usar o memcache, pq NAO FOI ele
que desenvolveu esse sistema e por o memcache ali da um pouco
de trabalho, pois tem que entender/alterar a classe de acesso ao
mysql, se bem que vi que a maioria ta usando as funcoes @mysql nua a
crua...
o que é ridiculo, quando deveria ser uma classe responsavel por isso,
para justamente nao ter que correr o sistema todo para alterar
qualquer
comportamento do mysql.
O fato é esse, o magrao do php ta mais perdido que cusco no meio de
procissao, kkk
Uma duvida que tenho que faz muita diferenca é a seguinte:
- esse sistema é acessado(alguma url dele) pelos clientes de torrent ?
por exemplo, se peguei um link dum torrent do teu site
e to baixando o torrento no meu MICRO TORRENT NA MINHA MAQUINA, o
microtorrent ele por si só acessa o site ? ou o proprio
site que usa o anounce quando eu clico num link do mesmo ?
resumindo: algum agente externo(cliente de torrent) atualiza algo no
site, ou tudo acontece a partir dos clicks no site ?
Vamos aos fatos que vc tem que observar:
- É de dominio publico que o innodb para inserts funciona melhor que o
myisam, isso é facil de mudar (pra quem sabe, pelo jeito teu phpman
nao sabe, eheh tu ta lascado!)
- Entao adotar o innodb faria muito diferenca, pois o tuning dele é
mais consistente para concorrencia, threads e justamente alto IO.
- Voce usou as opcoes de otimizacao no make.conf na hora que instalou
o apache, php, mysql ? tipo:
CFLAGS= -O2 -pipe -funroll-loops -ffast-math
COPTFLAGS= -O2 -pipe -funroll-loops -ffast-math
WITHOUT_X11=yes
NO_X=yes
- O myisam tem opcoes que podem ajudar, como o tamanho do cache para
criar indices(afeta o insert), mas ele nao é para alta concorrencia(
monte de desocupado fazendo insert ao mesmo tempo, ehe )
- Se (essa joça) funciona no linSUX, numa maquina inferior, e agora no
bsd esta mais lento ou com mais load acusando no sistema, algo esta
errado(quem nao sabe ne), temos que considerar:
a) o mesmo numero de usuarios esta acesando o sistema agora ? ou tem
mais do que na epoca do linux ?
b) alguma mudanca de comportamente do sistema foi feita ? ativou
algum recurso que nao usava antes ?
Se A e B nao indicam alguma mudanca de comportamento ou de acessos, é
obvio que o problema esta na configuracao da infra estrutura, php,
mysql ( o apache nao influencia muito )
Imagino, tenho quase certeza que a instalacao do php/mysql no linux
via o APT da vida, coloca tudo ja otimizado pra funcionar o melhor
possivel no linux, como ja comentei.
No bsd, vc quem que instalar tudo via ports fazendo na mao os tunings
necessarios, mas no final fica mais rapido que no linux, nao sou eu
que digo, varios benchmarks,
principalmente de mysql mostram isso.
- Como nao temos dominio sobre o comportamento exato do sistema, pois
NAO FOI FEITO por nos, nem pelo teu phpman, vamos focar na
infra-estrutura..
Me fale como instalou o conjunto php mysql apache. Pode ter algum xabu
ai com o php/mysql
Qual o numero de registros nas tabelas: USERS, TORRENTS E PEERS ?
Voce esta usando ufs com soft updates ? ou o tal zfs ? (nunca usei
zfs, pode ter algum xabu na config dele)
O myisam requer mais IO durantes os inserts que o innodb( eu acredito
) entao isso pode estar influenciando.
TEM O TAL PARTICIONAMENTO do mysql, que pode ser feito, o que vai
melhorar os inserts, pois o tamanho do indice fica
menor, mas isso se justifica se voce tiver milhoes de registros.
http://dev.mysql.com/doc/refman/5.1/en/partitioning-overview.html
http://tech.bluesmoon.info/2009/09/scaling-writes-in-mysql.html
Enfim, o que posso dizer é que pro numero de select/inserts por hora
que os graficos indicam, é nada pra maquina que voce citou,
nem cocegas deveria fazer, ou tem algo muito mal na instalacao(algum
bug talvez) ou o teu phpman ativou algo agora que nao estava
ativado antes la no linux.
Perguntei antes se o anounce é chamado pelo proprio site quando vc
clica num link por exemplo, para se fazer um teste,
apenas voce clicar no lugar que chama o anounce(e que esta
travando/demorando para o mundo externo) para ver se com um evento
fica lento ou aparece no top, se uma chamada do anounce esta
demorando, ja mostra que é problema de infra ou de estrutura logica
da aplicacao, agora se a lentidao e o load so aparecem quando tem
muito acesso... aí temos que voltar ao que estava discutindo antes.
Entao, voce consegue fazer esse tipo de teste ?Como ele ativa/desativa
esse anounce ? bota um exit; no inicio dele ?
achei muito ruim o codigo desse sistema... é muito antigo, fala php 4
e usava register globals on....
nao sei se a logica do cara esta correta para high load...
Cria um jail ai, pra gente instalar e fazer uns testes... eu te mando
um php que fica em loop dando inserts e medindo o tempo,
podemos simular a mesma estrutura que o anunce afeta, aí fica mais
facil achar onde esta o problema.
Num hardware desses é piada... tinha quer estar com 90% idle.....
Mais detalhes sobre a lista de discussão freebsd