Depurando Linux oom-killer - pouco ou nenhum uso de swap

0

Nós construímos um sistema que deve estar ligado o tempo todo - ele coleta e exibe gráficos de dados. Se deixarmos isso sem mudar nada por tempo suficiente, acabaremos com um evento matador de oom. Isso mata o nosso processo principal (tem a pontuação alta) e o nosso software é reiniciado.

Básico: O sistema é o CentOS 6, o kernel é 2.6.32.26. O sistema tem 2G de RAM e 4G de swap. A aplicação está escrita em C ++ w / Qt 3.

Eu configurei um cron job para pegar o conteúdo de / proc / meminfo e / proc / slabinfo a cada minuto. Aqui estão os traços que eu acho mais interessantes dos dados meminfo (o mais recente killer está no lado direito do gráfico):

ObservaçãoSUnreclaimcresceatéqueoassassinooomacerte.AmudançanainclinaçãonoSUnreclaiméondeeutroqueiastelas.

Aquiestãoalgunstraçosinteressantesdosdadosdoslabinfo:

Oqueissopareceparamiméquealgoestávazandoousefragmentando.Sejaoquefor,pareceserlimpoquandomeusprocessosmorrem,mashonestamentenãotenhoideiadoqueestáacontecendoaqui.

Comodescubrooqueestávazando?

Atualizado:Noiníciodesteprocesso,comeceicomasaídaps(nãomostradaaqui).TodososnossosvaloresdeRSSdoprocessoaumentamrapidamenteparaoseunível"normal" e depois permanecem. Se este fosse um processo que estivesse correndo com memória normal, eu não precisaria de ajuda. Em vez disso, há algo que estamos fazendo que está causando a alocação de memória não saturada.

Quanto à sugestão de atualização: A base de código tem muitas dependências em bibliotecas antigas, e eu não posso fazer uma transição para um kernel da série 3 agora mesmo.

    
por Michael Kohne 26.10.2017 / 13:51

1 resposta

0

Você fez duas perguntas.

1) Se o OOM Killer for executado + você não tem troca, provavelmente isso está relacionado à sua configuração vm.swappiness. Tente definir isso como 1. No seu kernel antiquado + altamente hackable (shudder), definir como 0 (se bem me lembro) desativa a troca completamente, o que provavelmente não é o que você procura.

2) Determinar o seu programa de vazamento pode ser tão fácil quanto executar o ps auxww repetidamente, procurando constantemente aumentar os valores de RSS ou alguma outra métrica.

Tudo isso dito ...

Seu Kernel é muito antigo. PHP é limitado em 5,3 (altamente hackable). O OpenSSL está com bugs. Muitas bibliotecas relacionadas são antigas + podem ser a fonte de vazamentos de memória.

Provavelmente é melhor atualizar para uma distro recente. Uma atualização simples pode instalar um código mais recente com o seu vazamento de memória.

    
por 26.10.2017 / 14:17