pipe: muitos arquivos abertos tornam todo o sistema operacional completamente inútil

1

Estou executando o Ubuntu 12.04 e estou tendo um grande problema. Duas vezes separadas hoje, uma das minhas sessões de terminal gnome abertas trancou e imprimiu o erro

pipe: too many open files

Eu sei que provavelmente está relacionado ao meu limite de usuário mostrado com ulimit -n que, a propósito, é 1024. O problema é que, quando isso acontece, posso forçar a saída do terminal problemático, mas não consigo abrir nada irá gerar um novo PID. Por exemplo, eu não posso usar xkill para matar qualquer coisa, não consigo abrir outro terminal para ver o topo, não consigo executar o desligamento, não posso acessar apenas um console e efetuar login. Clicar em qualquer link que deve abrir uma janela X gera uma nova janela que diz:

There was an error launching the application.
Details: Failed to fork (Cannot allocate memory)

Este é o mesmo erro que recebo quando tento fazer o login depois de pressionar Ctrl + Alt + F1. Porque eu fico completamente preso neste momento, sou forçado a hardboot minha máquina. Isso está tornando extremamente difícil depurar.

Há algo que eu possa fazer para recuperar quando esse erro for encontrado? Como devo rastrear o erro?

Como nota final, eu não tenho rodado um número ridículo de coisas: dois terminais, um com uma sessão byobu com 2 abas, uma com uma sessão python; uma única instância do emacs, um único google chrome e vários nós ROS (sistema operacional do robô).

EDITAR

Pressionar Ctrl + Alt + Backspace para reiniciar meu gerenciador de exibição permitiu que eu fizesse login novamente e começasse a abrir um terminal. Usando ps revelou que ainda havia muitos processos em execução que estavam sendo executados com o bloqueio. No mínimo, isso me permite reiniciar minha máquina a partir do software. Como devo proceder para determinar o que está causando esse problema?

EDIT 2

Acabei de abrir dois terminais que acabei de deixar de lado e esperei que o acidente acontecesse. Quando isso aconteceu, consegui capturar uma captura de tela da saída de top . Não sei se a saída será particularmente útil, mas eu anexei. A única coisa que notei que foi particularmente estranho foi que havia 5 processos zumbis.

    
por jarvisschultz 07.09.2012 / 00:15

2 respostas

2

Parece que você tem um vazamento de recursos em algum lugar. Você pode executar 'lsof' para obter uma lista de todos os arquivos abertos (obviamente, em algum momento, antes que o seu sistema esteja com fome). Compare a lista com os pids ativos e você (talvez) encontre o culpado.

Eu também sugeriria alterar o limite de arquivos abertos em /etc/security/limits.conf (ou talvez em algum outro lugar? Eu não segui o Ubuntu por um tempo e parece haver alguma especulação de que o limits.conf é ' t carregado por padrão). Se você realmente tiver um vazamento de recursos, isso só prolongará o problema. Procure por um vazamento primeiro.

    
por 07.09.2012 / 19:36
1

A mensagem de muitos arquivos abertos é provavelmente específica do processo, não um problema de todo o sistema. O "não pode alocar memória" pode ser específico do processo, mas provavelmente é todo o sistema.

Como cydonian.monk apontou, há um vazamento de recursos de algum tipo. O culpado mais provável é um processo descontrolado ou mal comportado que está gerando filhos repetidamente, ou tem um vazamento de bug ou memória que está causando repetidos arquivos abertos e / ou aloca memória ao ponto que o sistema está ficando com memória insuficiente.

Eu me concentraria no que você estava fazendo na primeira janela do terminal do gnome que primeiro recebia a mensagem de muitos arquivos abertos. Determine o que estava sendo executado na / nessa janela e foque em seu comportamento. Rodar o ps é cron a cada poucos minutos ou rodar top -b e salvar a saída em um arquivo pode lhe dar uma idéia do que estava acontecendo quando o próximo crash acontecer.

A saída principal que você forneceu parece um sistema normalmente em execução.

    
por 07.09.2012 / 20:04