すべてのプロダクト
Search
ドキュメントセンター

:Linuxインスタンスでサービスを起動したときにtask: Cannot allocate memoryというエラーメッセージが表示された場合はどうすればよいですか?

最終更新日:Jan 23, 2025

問題の説明

Linux Elastic Compute service (ECS) インスタンスでサービスプロセスを開始すると、次の図に示すように、task: Cannot allocate memoryエラーメッセージが表示されます。Cannot allocate memory

原因

この問題は、同時に実行できるシステムプロセスの最大数を超えたために発生する可能性があります。

Linuxカーネルでは、kernel.pid_maxパラメーターは、同時に実行できるプロセスの最大数を指定します。 オペレーティングシステムで実行されているプロセスの数がkernel.pid_maxパラメーターの値を超えると、オペレーティングシステムは新しいプロセスを作成できず、task: cannot allocate memoryというエラーメッセージが表示されます。
説明 オペレーティングシステムで同時に実行されているプロセスの数がkernel.pid_maxパラメーターの値の3分の2を超える場合は、kernel.pid_maxパラメーターの値を大きくして、他のサービスを期待どおりに実行できるようにすることを推奨します。

解決策

ビジネス要件に基づいてkernel.pid_maxパラメーターの値を増やすには、次の手順を実行します。
説明 64ビットオペレーティングシステムの場合、kernel.pid_maxパラメーターの最大値は2 22です。 32ビットオペレーティングシステムの場合、kernel.pid_maxパラメーターの最大値は32,768です。
  1. Linux ECSインスタンスに接続します。
    詳細については、「接続方法の概要」をご参照ください。
  2. オペレーティングシステムで実行されているプロセスの数が最大許容数を超えているかどうかを確認します。
    • 次のコマンドを実行して、オペレーティングシステムで実行されているプロセスの数を表示します。
      ps -eLf | wc -l
    • 次のコマンドを実行して、オペレーティングシステムで同時に実行できるプロセスの最大数を表示します。
      sysctl kernel.pid_max

    オペレーティングシステムで実行されているプロセスの数が最大数を超えている場合は、ステップ3に進みます。

  3. 次のいずれかのコマンドを実行して、kernel.pid_maxパラメーターの値を増やします。 コマンドで、XXXXを新しい値に置き換えます。
    • 次のいずれかのコマンドを実行して、kernel.pid_maxパラメーターの値を一時的に増やします。 Linux ECSインスタンスが再起動されると、kernel.pid_maxパラメーターは自動的に元の値に設定されます。
      • sysctl -wカーネル. pid_max=XXXX
      • エコーXXXX> /proc/sys/kernel/pid_max
    • 次のコマンドを実行して、kernel.pid_maxパラメーターの値を永続的に増やします。 新しい値は、インスタンスのステータスに関係なく有効です。
      echo "kernel.pid_max=XXXX" >> /etc/sysctl.conf
      sysctl -p 
    kernel.pid_maxパラメーターの値を変更すると、新しい値がすぐに有効になります。