Meu VPS caiu e eu não tenho idéia do porque

3

Eu tenho um VPS com Linode agora. Fui alertado pelo meu serviço de monitoramento que um site que eu estava hospedando havia caído. Eu usei Lish, o método Linode de obter acesso direto fora da banda ao console através de uma conexão SSH, mas sem usar o SSH, para ver qualquer mensagem de erro. Isso é o que eu vi:

EuverifiqueimeuslogsdoMuninparaversehaviaumpiconousodamemóriae,defato,háumpiconomomentoapropriadoparaográficodeswap:

No entanto, não houve aumento no gráfico de memória (embora a troca pareça estar aumentando ligeiramente ):

Eureinicieioservidoreeleestáfuncionandobemdesdeentão.VerifiqueioslogsdeacessoeerrodoApacheenãovinadasuspeito.AúltimaentradanosyslogantesdareinicializaçãodoservidorfoiumerrocomodaemondoIMAPenãopareceestarrelacionada:

Oct2818:30:35hostnameimapd:TIMEOUT,[email protected],ip=[::ffff:XX.XX.XX.XX],headers=0,body=0,rcvd=195,sent=680,time=1803#allofthestartuplogsbelowhereOct2818:40:33hostnamekernel:imklog5.8.1,logsource=/proc/kmsgstarted.

Eutenteiverificarodmesg,mastambémnãovinadasuspeito.Asúltimaslinhas:

VFS:Mountedroot(ext3filesystem)readonlyondevice202:0.devtmpfs:mountedFreeingunusedkernelmemory:412kfreedWriteprotectingthekerneltext:5704kWriteprotectingthekernelread-onlydata:1384kNX-protectingthekerneldata:3512kinit:Failedtospawnconsole-setupmainprocess:unabletoexecute:Nosuchfileordirectoryudevd[1040]:startingversion173Adding524284kswapon/dev/xvdb.Priority:-1extents:1across:524284kSSinit:udev-fallback-graphicsmainprocess(1979)terminatedwithstatus1init:plymouthmainprocess(1002)killedbySEGVsignalinit:plymouth-splashmainprocess(1983)terminatedwithstatus2EXT3-fs(xvda):usinginternaljournalinit:plymouth-logmainprocess(2017)terminatedwithstatus1init:plymouth-upstart-bridgemainprocess(2143)terminatedwithstatus1init:sshmainprocess(2042)terminatedwithstatus255init:failsafemainprocess(2018)killedbyTERMsignalinit:apportpre-startprocess(2363)terminatedwithstatus1init:apportpost-stopprocess(2371)terminatedwithstatus1

EutenteipesquisarnoGoogleamensagemdeerro(kernelBUGatmm/swapfile.c:2527!)eencontreialgunstópicosrelacionadosaoXen(oLinodeusaoXen):

No entanto, nenhuma das informações que encontrei parecia apontar para qualquer solução. Vou atualizar para as ofertas mais recentes do Linode do kernel (de 2.6.39.1-linode34 a 3.0.4-linode38 ).

Há mais alguma coisa que eu possa fazer para diagnosticar esse problema agora ou no futuro se isso acontecer novamente? Existe alguma coisa que eu perdi? Alguém tem idéias para o que pode ter provocado isso?

Por favor, deixe-me saber se há alguma outra informação que eu possa fornecer. Obrigado uma tonelada.

    
por Tom Marthenal 29.10.2011 / 01:32

2 respostas

2

O problema estava relacionado ao bug no Xen (mencionado na pergunta). A atualização para a versão mais recente do kernel ( 3.0.4-linode38 ) resolveu os problemas (o servidor estava falhando repetidamente até que eu mudei a versão do kernel). Os problemas parecem ter sido causados não por falta de memória, mas pelo mau gerenciamento da memória pelo kernel (ou algum bug no Xen).

    
por 30.10.2011 / 23:33
2

Você puxou os gráficos do Munin antes ou depois de reiniciar o sistema? Se depois, a parte depois da seção em branco provavelmente DEPOIS você reinicializou e é irrelevante. Eu acho que é depois, porque o seu uso de swap caiu drasticamente ...

Em sua pergunta, você está ignorando a seção em branco ... Você diz que "o gráfico não mostra o uso de memória aumentando", mas o que eles realmente mostram é que não há dados durante o tempo em que a memória provavelmente estava aumentando. O munin é uma ótima ferramenta, mas é terrível relatar instâncias como essa, porque ele apenas relata informações a cada 5 minutos e, se o sistema estiver ocupado, pode não informar nada.

Você já fez a matemática da memória para o número de instâncias do Apache que você pode executar? Com isso quero dizer "ps awwlx --sort = rss | grep apache" e observe quanta memória cada instância do Apache está usando. Por exemplo:

root@theobromine:~# ps awwlx --sort=rss | grep apache
0     0 18497 18485  20   0   1788   528 -      S+   pts/0      0:00 grep apache
5    33 18458  5384  20   0  28468  6700 -      S    ?          0:00 /usr/sbin/apache2 -k start
5    33 18470  5384  20   0  28468  6700 -      S    ?          0:00 /usr/sbin/apache2 -k start
5    33 18480  5384  20   0  28468  6700 -      S    ?          0:00 /usr/sbin/apache2 -k start
5    33 18481  5384  20   0  28468  6700 -      S    ?          0:00 /usr/sbin/apache2 -k start
5    33 18457  5384  20   0  28468  6708 -      S    ?          0:00 /usr/sbin/apache2 -k start
5     0  5384     1  20   0  28336 11796 -      Ss   ?          0:16 /usr/sbin/apache2 -k start

É a oitava coluna que estamos olhando. Neste caso, está usando 6,7MB para cada instância, o que na verdade é relativamente pequeno. Mas agora eu olho para a quantidade de memória que tenho:

root@theobromine:~# free
             total       used       free     shared    buffers     cached
Mem:        775196     643848     131348          0      77964     268788
-/+ buffers/cache:     297096     478100
Swap:      1148636       3368    1145268

Então eu tenho 800MB de RAM ... Agora, posso fazer as contas e dizer que, no melhor dos casos, posso executar 800 / 6.7 = 119 instâncias do Apache. Mas isso não deixa espaço para nenhum outro aplicativo, sistema operacional ou cache, etc ...

Mas na verdade você tem 478MB (segunda coluna em "livre") no máximo, menos a quantidade de Apaches atualmente em execução (6.7 * 6 - eu só tinha 6 instâncias Apache rodando acima), deixando cerca de 520MB de RAM você sem cache, é claro). Então, o máximo que posso realmente executar é mais de 77 instâncias.

Então, quantos estou realmente correndo?

root@theobromine:~# grep MaxClients /etc/apache2/apache2.conf
# MaxClients: maximum number of server processes allowed to start
    MaxClients          150
# MaxClients: maximum number of simultaneous client connections
    MaxClients          150

Ah, o Apache não está me limitando a menos memória do que eu. Portanto, se mais de 77 clientes se conectarem ao meu servidor da Web de uma só vez, provavelmente começaremos a nos debater.

Eu vejo isso com bastante frequência: "Eu preciso ser capaz de lidar com 500 conexões web simultâneas". Mas então você olha para as instâncias do Apache e eles estão usando 60MB (não um tamanho invulgarmente grande), mas depois surtam quando você diz que eles precisam atualizar seu VPS para 32BG de RAM. : -)

    
por 29.10.2011 / 05:00