Todos os produtos
Search
Central de documentação

:Solucionar falhas de conexão remota ou erros "Too many open files" causados por ajustes no parâmetro nofile

Última atualização: Jul 03, 2026

Sintomas

  • Falha na conexão remota:

    • Ao usar SSH ou Workbench para conectar-se à instância, a conexão é recusada ou atinge o tempo limite.

    • Ao fazer login via VNC, uma mensagem de System error aparece após a inserção das credenciais corretas.

  • Comportamento anormal da aplicação:

    Logs da aplicação ou saídas de linha de comando exibem o erro Too many open files.

    ./test3.sh: redirection error: cannot duplicate fd: Too many open files
    ./test3.sh: line 13: /tmp/testfile_20: Too many open files
    Error opening file 20: Too many open files

Causa

Limite de recursos nofile muito restritivo: O parâmetro nofile no arquivo /etc/security/limits.conf define o número máximo de arquivos que um processo pode abrir. Se um processo tentar abrir mais arquivos do que esse limite permite, o sistema poderá reportar um erro ou recusar novas conexões.

Procedimento

Se for possível fazer login na instância, modifique o arquivo de configuração diretamente. Caso contrário, repare a configuração anexando o disco do sistema a outra instância.

Com acesso à instância

  1. Faça login na instância ECS como usuário root.

    1. Acesse a página ECS console - Instances. No canto superior esquerdo, selecione o grupo de recursos e a região onde a instância está localizada.

    2. Navegue até a página de detalhes da instância desejada. Clique em Connect e selecione Workbench. Siga as instruções na tela para fazer login como root user e abrir o terminal.

  2. Modifique o arquivo de configuração.

    Edite o arquivo /etc/security/limits.conf. Altere os valores dos parâmetros hard nofile e soft nofile para o valor padrão 65535. Em seguida, salve o arquivo e saia.

    * soft nofile 65535
    * hard nofile 65535
    root soft nofile 65535
    root hard nofile 65535
    • O asterisco (*) aplica-se a todos os usuários comuns, enquanto root refere-se ao usuário root.

    • hard nofile: Limite máximo (hard limit) para o número de arquivos abertos. Este valor não pode exceder o limite definido pelo parâmetro de kernel fs.nr_open. Caso contrário, talvez não seja possível fazer login na instância.

    • soft nofile: Limite atual (soft limit) para o número de arquivos abertos. Este valor não pode exceder o limite hard nofile. Se exceder, essa configuração será ignorada.

      Se o valor de soft nofile for maior que o valor de hard nofile , o valor efetivo de nofile corresponderá ao valor do parâmetro hard nofile .
  3. Aplique a nova configuração.

    1. Faça logout e login novamente na instância ECS com o usuário alvo para aplicar as alterações.

    2. Execute o comando sudo ulimit -n. Se a saída for 65535, o limite nofile foi atualizado.

  4. Reinicie as aplicações relacionadas e verifique se funcionam normalmente.

Sem acesso à instância

Importante

Se houver um snapshot histórico do disco do sistema disponível, recomendamos primeiro criar um novo snapshot para fazer backup dos dados atuais. Depois, restaure o disco do sistema usando o snapshot histórico e verifique se a instância foi recuperada.

Caso não exista nenhum snapshot histórico, prepare uma instância Linux íntegra que esteja na mesma zona da instância com problema. Assim, você poderá alterar o parâmetro nofile anexando o disco do sistema da instância problemática à instância íntegra.

  1. Desanexe o disco do sistema.

    Certifique-se de que a instância com problema esteja no estado Stopped e execute as etapas a seguir:

    1. Para evitar perda acidental de dados, crie um snapshot manual do disco do sistema.

    2. Acesse a página ECS console - Instances. No canto superior esquerdo, selecione o grupo de recursos e a região onde a instância está localizada.

    3. Clique no ID da instância com problema para acessar a página Instance Details. Em seguida, clique na aba Block Storage.

    4. Na seção System Disk, localize a coluna Actions e escolha 更多 > Detach.

    5. Na caixa de diálogo Detach Disk, confirme as informações e clique em OK. Quando o status da instância mudar para No System Disk, o disco terá sido desanexado com sucesso.

  2. Anexe o disco como disco de dados a uma instância íntegra.

    Garanta que a instância íntegra esteja no estado Running e realize os passos abaixo:

    1. Anexe o disco do sistema da instância problemática à instância íntegra.

      1. Clique no ID da instância íntegra para ir à sua página de detalhes.

      2. Clique na aba Block Storage e depois em Attach Disk.

      3. Na página Attach to Instance, selecione o disco do sistema desanexado na seção Disk e clique em Next.

      4. Na página Partition Disk and Create and Mount File Systems, selecione Configure Later para concluir o anexo.

    2. Clique em Connect e selecione Workbench. Siga as instruções na tela para fazer login como root user e abrir o terminal.

    3. Monte o sistema de arquivos.

      1. Identifique o nome da partição do disco com problema.

        lsblk -f
        vda                                                      
        ├─vda1                                                   
        ├─vda2 vfat         7938-FA03                            /boot/efi
        └─vda3 ext4   root  33b46ac5-7482-4aa5-8de0-60ab4c3a4c78 /
        vdb                                                      
        ├─vdb1                                                   
        ├─vdb2 vfat         7938-FA03                            
        └─vdb3 ext4   root  33b46ac5-7482-4aa5-8de0-60ab4c3a4c78                                  

        Neste exemplo, a partição raiz do disco com problema vdb é vdb3. Esta é a partição que deve ser montada. As partições são descritas da seguinte forma:

        • vdb1/vdb2: Contêm arquivos de inicialização do sistema e podem ser ignoradas.

        • vdb3: Trata-se da partição raiz, contendo arquivos do sistema operacional e dados do usuário. Deve ser montada obrigatoriamente.

      2. Crie um diretório e monte o sistema de arquivos.

        mkdir <mount_point> && sudo mount /dev/<partition_name> <mount_point>

        Parâmetro

        Descrição

        <partition_name>

        Nome da partição raiz do disco com problema identificado na etapa anterior.

        <mount_point>

        Um <ponto de montagem> personalizado deve ser um caminho vazio iniciando com / e precisa ser único.

        Importante

        Ao montar um sistema de arquivos em um diretório não vazio, os arquivos originais desse diretório ficam ocultos e inacessíveis. Prossiga com cautela.

        Por exemplo, para montar a partição alvo vdb3 no diretório recém-criado /test , execute o comando mkdir /test && sudo mount /dev/vdb3 /test .
      3. Verifique o resultado da montagem.

        Execute o comando lsblk. Se a partição alvo possuir um ponto de montagem na coluna MOUNTPOINT, o sistema de arquivos foi montado com êxito.

  3. Altere o arquivo de configuração.

    Edite o arquivo <mount_point>/etc/security/limits.conf. Modifique os valores dos parâmetros hard nofile e soft nofile para o valor padrão 65535. Salve o arquivo e saia.

    * soft nofile 65535
    * hard nofile 65535
    root soft nofile 65535
    root hard nofile 65535
    • O asterisco (*) vale para todos os usuários, e root aplica-se especificamente ao usuário root.

    • hard nofile: Define o limite rígido para arquivos abertos. Esse valor não deve ultrapassar o parâmetro de kernel <mount point>/proc/sys/fs/nr_open, sob pena de impedir o login na instância.

    • soft nofile: Representa o limite atual de arquivos abertos. Não pode ser superior ao limite hard nofile, caso contrário a configuração é desconsiderada.

      Quando o valor de soft nofile supera o de hard nofile , o valor efetivo de nofile passa a ser o do parâmetro hard nofile .
  4. Anexe o disco de volta à instância ECS original como disco do sistema.

    1. Desmonte o sistema de arquivos.

      Substitua <mount_point> pelo ponto de montagem real.

      umount <mount_point>
      Como exemplo, execute o comando umount /test .
    2. Desanexe o disco do sistema reparado.

      1. Retorne ao ECS console e vá para a aba Block Storage na página de detalhes da instância íntegra.

      2. Na coluna Actions referente ao disco do sistema reparado, clique em Detach.

      3. Na caixa de diálogo Detach Disk, clique em OK.

    3. Reanexe o disco do sistema reparado à instância original.

      1. Vá até a aba Block Storage da página de detalhes da instância com problema e clique em Attach Disk.

      2. Na página Attach to Instance, selecione o disco do sistema reparado na lista Disk. Configure as Logon Credentials e clique em Next.

      3. Na página Partition Disk and Create and Mount File Systems, selecione Configure Later para finalizar o anexo.

    4. Inicie a instância ECS.

  5. Faça login na instância ECS original e confirme seu funcionamento normal.

Recomendações

  • Manipule arquivos essenciais do sistema com cuidado: Antes de editar arquivos críticos, sempre crie um snapshot manual. Compreenda bem os riscos envolvidos e faça apenas alterações estritamente necessárias.

  • Implemente monitoramento e alertas: Acompanhe a configuração ulimit -n nas instâncias críticas. Comparar regularmente o valor de execução de ulimit -n com a configuração esperada permite validar limites de recursos e receber alertas sobre mudanças não autorizadas.