mongodb mistério trava com sigkill sob strace

1

Eu tenho uma instância do mongodb que parece falhar aproximadamente uma vez por dia. Eu não vejo nenhuma informação útil no arquivo de log do mongo. Tudo está bem e, em seguida, o processo é apenas caiu sem informações adicionais registradas. Eu corri sob pressão na esperança de obter algumas dicas úteis até que ele caiu e tenho essa saída:

Wed Apr 17 10:56:39.340 [conn172]               M/R: (1/3) Emit Progress: 2800/4351     64%
Wed Apr 17 10:57:16.696 [PeriodicTask::Runner] task: DBConnectionPool-cleaner took: 16ms
Wed Apr 17 10:57:17.035 [PeriodicTask::Runner] task: WriteBackManager::cleaner took: 17ms
Wed Apr 17 10:57:17.429 [PeriodicTask::Runner] task: DBConnectionPool-cleaner took: 79ms
+++ killed by SIGKILL +++

Isso está acontecendo apenas em uma VM específica e o resto está bem. Também verificado horária / diária cron empregos no caso de algo estava indo derem errado e matando mongod mas nenhum suspeito lá.

SO : Ubuntu 12.04.2

Mongo : 2.4.1

Mais alguma coisa que eu possa fazer para solucionar mais?

    
por Peter Lyons 17.04.2013 / 21:04

1 resposta

1

Você está executando um trabalho de Map Reduce no momento em que é eliminado. Esse é sempre o caso?

Eu pergunto porque soa como o tipo de comportamento que você obtém quando um processo do tipo watchdog decide que você está usando muita memória e mata o processo. Map Reduzir jobs (inline ou aqueles que são executados em grandes conjuntos de dados em particular) tendem a aumentar o uso de RAM rapidamente.

SIGKILL não é o que você obteria se este fosse o kernel decidir que você estava sem memória e invocando o killer da OOM (que parece uma falha silenciosa e está logado no dmesg). Assim, isso me faria acreditar que há algo mais fazendo a matança para evitar o uso de memória além de um certo limite.

Se você quiser verificar, execute db.collection.find().explain() em um grande conjunto de dados e veja se isso aciona um SIGKILL também. Em caso afirmativo, não acho que esse tipo de VM seja adequado para executar um banco de dados mapeado na memória.

    
por 22.05.2013 / 19:40