Eu tenho uma dúzia ou mais de computadores de placa única em uma rede rodando Debian (squeeze) e os acesse via ssh (o servidor ssh é dropbear). Para dar uma idéia do hardware desses computadores, eles são processadores x86 de 1,2 GHz, 1GB de RAM e flash drives de 4GB formatados como ext2 (evitei ext3 para evitar o estresse adicional de gravação em flash do registro no diário). a unidade.
Normalmente, a configuração que estou usando funciona muito bem e consigo acessar todos os computadores. De vez em quando, um impede o acesso. O que acontece é que eu tento conectar via ssh (putty) e me dá o prompt de login, eu insiro o nome de usuário e senha e responde 'Access Denied' e ele também irá recusar qualquer chave pública em ~ / .ssh / authorized_keys. As credenciais estão corretas, pois funcionavam anteriormente. O computador responde a pings e putty reconhece a chave pública do servidor, o que significa que o sistema ainda está em execução. Reiniciar o servidor corrige o problema e posso efetuar login novamente. (Eu tentei uma correção temporária de colocar o shutdown -r agora no crontab da raiz, mas isso não parece ser executado com segurança depois que o travamento acontece) Uma vez que eu reiniciei, não parece haver nenhuma informação em nenhum dos logs do sistema para indicar o que aconteceu, os logs estão simplesmente vazios para esse período de tempo, como se o sistema tivesse falhado.
Existe algum software personalizado em execução no sistema que parece parar de funcionar (é por isso que eu queria ssh para começar). Estou assumindo que este programa é a fonte dos problemas, mas não tenho certeza de como isso o causaria e como depurar o que está acontecendo.
A explicação mais provável que consigo pensar é que existe um vazamento de memória no outro programa que impede que o dropbear crie um novo shell de login (e o crontab executa o desligamento), pois não há memória livre suficiente. Mas, olhando para o uso de memória dos outros computadores (funcionais), não parece haver nenhum aumento significativo na memória para indicar um vazamento (a menos que seja um vazamento muito grande, de ação rápida e raro). Eu pensaria que quando o sistema operacional ficou sem memória ele iria reiniciar o sistema ou matar processos (o kernel do Linux reinicia certo?). A outra coisa que eu me pergunto é se o fato de que eles estão rodando em uma unidade flash pode ter algum efeito, especialmente a partição swap (que eu acho que devo remover para evitar o desgaste do flash), mas as unidades flash são jovens 1 mês) e eu não acho que o desgaste seria um fator ainda.
Alguém tem uma idéia do que poderia causar esses sintomas, se isso poderia ser feito por um vazamento de memória, ou algo que eu não tenha pensado. E alguém sabe de um método para tentar depurar o problema e descobrir mais informações sobre o que está errado?