AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 904037
Accepted
four43
four43
Asked: 2018-03-23 06:26:34 +0800 CST2018-03-23 06:26:34 +0800 CST 2018-03-23 06:26:34 +0800 CST

Por que o MongoDB não reinicia automaticamente?

  • 772

Parece que o MongoDB 3.6 não está configurado automaticamente para reiniciar se travar. Olhando para o serviço systemd que vem com o pacote .deb mais recente para o Ubuntu 16.04LTS, não parece ter reinicializações configuradas:

$ sudo systemctl cat mongod
# /lib/systemd/system/mongod.service
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
Documentation=https://docs.mongodb.org/manual

[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod --config /etc/mongod.conf
PIDFile=/var/run/mongodb/mongod.pid
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false

# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings

[Install]
WantedBy=multi-user.target

O envio de SIGKILL e SIGSEGV mata o processo e ele não é reiniciado. Não tenho certeza se eles são "capturados" pelo systemd e não apenas reiniciados.

Então, algumas perguntas: isso é crucial para um serviço de alta disponibilidade como um banco de dados? Com certeza parece. Existe algum motivo pelo qual o MongoDB não teria isso configurado imediatamente?

ubuntu
  • 3 3 respostas
  • 4171 Views

3 respostas

  • Voted
  1. Best Answer
    Stennie
    2018-03-29T19:51:03+08:002018-03-29T19:51:03+08:00

    O desligamento inesperado é definitivamente um caso em que a intervenção do administrador seria fortemente recomendada, embora você sempre possa alterar o padrão do serviço para suas implantações.

    Se o motivo do mongodencerramento de um processo for uma invariante que não pode ser corrigida sem intervenção manual (por exemplo, falta de espaço em disco ou corrupção de arquivos de dados), as reinicializações automáticas não serão úteis e podem piorar a situação. Em geral, mongodnão deve desligar em erros recuperáveis. A Arquitetura de Exceções do MongoDB Server distingue entre erros fatais por operação e aqueles que são fatais para todo o processo. Erros fatais de processo são situações em que a continuação pode levar a resultados terríveis, como perda de dados ou dados corrompidos no disco. Um sinal iniciado pelo usuário ou O/S para encerrar o processo (como o Out-of-Memory, também conhecido como OOM Killer no Linux) também causará mongodo desligamento.

    Um exemplo de erro mencionado nos comentários foi uma compilação de índice que falhou em alguns secundários com uma versão mais antiga do MongoDB. Com reinicializações automáticas de serviço, esse cenário pode levar a um loop sem fim em que um secundário pode travar, reiniciar, retomar a compilação de índice, encontrar a mesma condição e reiniciar... apenas para retomar uma compilação de índice condenada. Enquanto esse loop de reinicialização está em andamento, a disponibilidade intermitente do secundário pode afetar os clientes que usam as preferências de leitura secundária ou outros membros do conjunto de réplicas (por exemplo, procurar repetidamente em um oplog upstream para retomar a sincronização).

    Como administrador do sistema, prefiro revisar os logs do MongoDB e tentar entender por que o processo foi encerrado para que a causa raiz possa ser resolvida. Idealmente, uma implantação terá tolerância a falhas suficiente para poder lidar com membros indisponíveis para que haja tempo para investigar e remediar a situação.

    Dependendo da natureza do problema e da implantação (independente, conjunto de réplicas ou cluster fragmentado), talvez eu também queira fazer um backup dos arquivos de dados antes de tentar qualquer recuperação automática ou manual. Por exemplo, quando reiniciado após um desligamento não limpo mongod, tem um estágio de recuperação inicial que aplicará entradas de diário pendentes e executará verificações do mecanismo de armazenamento, como integridade do arquivo de dados no arquivo dbPath. Para um servidor autônomo, seria prudente fazer uma cópia dos arquivos de dados não modificados antes de qualquer tentativa de recuperação/reparo. Com uma implantação de conjunto de réplicas, os dados já estão duplicados em outro membro do conjunto de réplicas, portanto, se a recuperação padrão não for bem-sucedida, eu sincronizaria novamente esse membro em vez de tentar qualquer reparo.

    • 6
  2. Tux_DEV_NULL
    2018-03-23T06:36:48+08:002018-03-23T06:36:48+08:00

    Se você estiver usando o systemd, Restart=alwaysna [Service]seção deve permitir que o serviço seja reiniciado após uma falha.

    • 3
  3. Jason Floyd
    2018-03-24T08:07:43+08:002018-03-24T08:07:43+08:00

    Se você estiver realmente preocupado com a alta disponibilidade, estará executando um conjunto de réplicas e poderá lidar com a falha de 1 ou mais nós.

    Tendo gerenciado pessoalmente uma implantação grande e fragmentada do mongodb em produção por 5 anos, prefiro que as instâncias NÃO sejam reiniciadas automaticamente, pois gostaria de investigar quaisquer problemas antes de voltar à rotação no conjunto de réplicas.

    https://docs.mongodb.com/manual/core/replica-set-high-availability/

    • 2

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve