Que recursos é incrond usando? O que pode fazer parar?

2

O Incrontab está configurado para monitorar aprox. 10 diretórios. A única coisa que faz é que ele inicia um script Bash quando o novo arquivo é recebido dentro de um desses diretórios. Aproximadamente, um arquivo é recebido a cada 5 minutos, em cada um dos diretórios. No entanto, incrond ocasionalmente pára. Não há regra quando isso acontecerá. Varia de algumas vezes por semana a poucas vezes por mês. O erro registrado é:

incrond[35203]: *** unhandled exception occurred ***
incrond[35203]:   polling failed
incrond[35203]:   error: (11) Resource temporarily unavailable
incrond[35203]: stopping service

Estou ciente de que não publiquei muita informação. No entanto, o sistema está fechado, então compartilhei o que pude. Eu não estou procurando a resposta direta (já que a questão pode ser muito ampla). Eu estou procurando as idéias que eu possa pesquisar. Qual poderia ser a razão para tal comportamento? O que devo verificar? Quais recursos devo verificar?

    
por Muhamed Huseinbašić 30.12.2016 / 15:57

2 respostas

1

incrond usa o subsistema inotify do nível de kernel, incorporando a interface inotify C em um contêiner C ++. Dando uma olhada nos arquivos incrond source , parece que o erro que você está enfrentando está relacionado a uma pesquisa com falha no descritor de arquivo que foi desativado na classe incrond C ++:

int res = poll(ed.GetPollData(), ed.GetSize(), -1);

  if (res > 0) {
    ed.ProcessEvents();
  }
  else if (res < 0) {
    switch (errno) {
      case EINTR:   // syscall interrupted - continue polling
        break;
      case EAGAIN:  // not enough resources - wait a moment and try again
        syslog(LOG_WARNING, "polling failed due to resource shortage, retrying later...");
        sleep(POLL_EAGAIN_WAIT);
        break;
      default:
        throw InotifyException("polling failed", errno, NULL);
    } 
  }

É difícil identificar a causa exata da pesquisa com falha. As causas mais comuns podem ser:

  • um sistema sobrecarregado
  • um crash / segfault de algumas incrond functions

De qualquer forma, quantos arquivos existem sob seus diretórios monitorados?

    
por 30.12.2016 / 18:15
0

Use strace no comando, registrando em um arquivo e defina o arquivo de registro para girar, dependendo da frequência com que você percebe a falha.

Por exemplo, se você levar uma semana para descobrir que ele falhou, sua rotação de log deve ser mantida por 7 dias (ou mais). Se você está geralmente ciente dentro de uma hora, então 6 a 10 horas de registros horários rotativos devem ser suficientes.

Mais sobre isso e exemplos: link

    
por 30.12.2016 / 16:30