Todos os produtos
Search
Central de documentação

:Resolução do erro `task: Cannot allocate memory`

Última atualização: Jul 03, 2026

Sintoma

Ao iniciar um serviço em uma instância ECS, o sistema retorna o erro

task: Cannot allocate memory

. Os logs do sistema podem conter entradas semelhantes ao exemplo abaixo:

15 10:49:08 iZbp17u xxx systemd: Failed to fork: Cannot allocate memory
15 10:49:08 iZbp17u xxx systemd: frp@8050.service failed to run 'start' task: Cannot allocate memory
15 10:49:08 iZbp17u xxx systemd: Failed to start example systemd custom service unit file 8050.
15 10:49:08 iZbp17u xxx systemd: Unit frp@8050.service entered failed state.
15 10:49:08 iZbp17u xxx systemd: frp@8050.service failed.
15 10:49:08 iZbp17u xxx systemd: Failed to fork: Cannot allocate memory
15 10:49:08 iZbp17u xxx systemd: frp@8049.service failed to run 'start' task: Cannot allocate memory
15 10:49:08 iZbp17u xxx systemd: Failed to start example systemd custom service unit file 8049.
15 10:49:08 iZbp17u xxx systemd: Unit frp@8049.service entered failed state.

Causa

Esse problema ocorre quando a quantidade de processos no sistema ultrapassa o limite configurado.

O kernel do Linux usa o parâmetro

kernel.pid_max

para limitar o número total de processos. Se a quantidade total de processos em execução exceder o valor de

kernel.pid_max

, qualquer tentativa de criar um novo processo falhará e o sistema retornará o erro

task: Cannot allocate memory

.

Nota

Se o número atual de processos em execução ultrapassar dois terços do valor de

kernel.pid_max

, aumente imediatamente esse valor para evitar interrupções nos serviços.

Solução

Siga as etapas abaixo para aumentar o valor de

kernel.pid_max

. Isso permite que o sistema execute mais processos.

Nota

Em sistemas de 64 bits, o valor máximo para

kernel.pid_max

é 2

22

. Em sistemas de 32 bits, o valor máximo é 32.768.

  1. Conecte-se à instância ECS.

    Para obter mais informações, consulte

    Conectar-se a uma instância ECS

    .

  2. Execute os comandos a seguir para verificar se a contagem atual de processos excede o limite do sistema.

    • Verifique o número atual de processos em execução.

      ps -eLf | wc -l
    • Verifique o número máximo de processos permitidos pelo sistema.

      sysctl kernel.pid_max

    Se o número de processos em execução estiver próximo ou acima do limite máximo, prossiga para a etapa 3.

  3. Substitua XXXX pelo novo valor desejado para kernel.pid_max.

    • Para definir o valor temporariamente, execute um dos comandos abaixo. A configuração será redefinida após a reinicialização da instância.

      • sysctl -w kernel.pid_max=XXXX

      • echo XXXX> /proc/sys/kernel/pid_max

    • Para tornar a alteração permanente, execute os comandos a seguir. A configuração persistirá entre as reinicializações da instância.

      echo "kernel.pid_max=XXXX" >> /etc/sysctl.conf
      sysctl -p

    O novo valor entra em vigor imediatamente.