ログイン・トラブルシューティング

Oracle Cloud Infrastructure上のOracle Linuxインスタンスでのログインの問題を解決するには、次の情報を確認します。

Oracle Linuxインスタンスへのログインが「fork: retry: Resource temporary unavailable」エラーで失敗

Oracle Linuxのfork failed: Resource temporary unavailableエラーは、多くの場合、完全なプロセス表、メモリー不足、ユーザーまたはシステムの制限に達したなどのリソース制限により、システムが新しいプロセスを作成できないことを示しています。

潜在的な原因

ユーザーまたはシステムのリソース制限に達しました
ユーザーは、作成できるプロセス数、またはユーザーが保持できるオープン・ファイルの数に制限がある場合があります。または、リソースが不足しているか、プロセスの最大数に達しているため、新しいプロセスを作成できない可能性があります。
システムメモリーまたはスワップ領域が不足しています
新しいプロセスに割り当てるのに十分なメモリーまたはスワップ領域がシステムにない可能性があります。
サービスまたはプロセスの誤動作
ランナウェイ・プロセスまたはサービスは、過剰なリソースを消費し、新しいプロセスの起動を妨げる可能性があります。
オープンしているファイル記述子が多すぎます
オープン・ファイル記述子の最大数に達したため、新しいファイルをオープンできない可能性があります。
/etc/security/limits.confファイルの構成ミスまたはエラー
limits.confファイルが正しく構成されていない場合、より大きな値が適用されない可能性があり、ユーザー・アカウントがデフォルトの制限に達してエラーをトリガーする可能性があります。

トラブルシューティング

  • リソースの使用状況を監視し、不要なプロセスを特定および停止して、メモリーおよびスワップ領域を解放します。
    • topまたはvmstatを使用して、高いCPUまたはメモリーを消費するプロセスを識別します。たとえば:
      $ vmstat
      
      procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
      r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
      1  0      0 12607316   4336 2737552    0    0   109   302  182  267  3  1 96  0  0
      
      $ top
      
      top - 16:04:04 up  1:07,  2 users,  load average: 0.01, 0.13, 0.10
      Tasks: 180 total,   1 running, 179 sleeping,   0 stopped,   0 zombie
      %Cpu(s):  0.0 us,  0.2 sy,  0.2 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
      MiB Mem :  15700.7 total,  12305.2 free,    717.2 used,   2678.4 buff/cache
      MiB Swap:   4096.0 total,   4096.0 free,      0.0 used.  14673.0 avail Mem
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      12331 opc       20   0   54424   5040   4252 R   0.7   0.0   0:00.07 top
      11972 root      30  10 2095708 292468 123100 S   0.3   1.8   0:05.65 wlp-agen+
      ...
    • ps auxを使用して、すべてのプロセスとそのリソース使用率をリストします。たとえば:
      $ ps aux
      
      USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
      root           1  0.1  0.1 179460 17548 ?        Ss   14:56   0:04 /usr/lib/syste
      root           2  0.0  0.0      0     0 ?        S    14:56   0:00 [kthreadd]
      root           3  0.0  0.0      0     0 ?        I<   14:56   0:00 [rcu_gp]
      root           4  0.0  0.0      0     0 ?        I<   14:56   0:00 [rcu_par_gp]
      ...
    • 不要になったプロセスや、kill <PID>またはkill -9 <PID>を使用して問題が発生したプロセスを停止します。次に例を示します。
      [opc@<oracle-linux-instance-name> ~]$ kill -9 12346
  • ユーザー・リソース制限の確認および調整
    • ulimit -aを使用して、現在のユーザー制限を確認します。たとえば:
      $ ulimit -a
      
      core file size          (blocks, -c) 0
      data seg size           (kbytes, -d) unlimited
      scheduling priority             (-e) 0
      file size               (blocks, -f) unlimited
      pending signals                 (-i) 62425
      max locked memory       (kbytes, -l) 64
      max memory size         (kbytes, -m) unlimited
      open files                      (-n) 1024
      ...
    • ulimitを使用して、一時的に制限を増やします。たとえば、ユーザーが保持できるオープン・ファイルの数を一時的に増やすには、ulimit -n <number>を使用します。
      $ ulimit -n 2096
      
      $ ulimit -a
      
      core file size          (blocks, -c) 0
      data seg size           (kbytes, -d) unlimited
      scheduling priority             (-e) 0
      file size               (blocks, -f) unlimited
      pending signals                 (-i) 62425
      max locked memory       (kbytes, -l) 64
      max memory size         (kbytes, -m) unlimited
      open files                      (-n) 2096
      ...
    • /etc/security/limits.confファイルで、正しい書式設定、入力エラーがないこと、およびユーザー・アカウントに設定された値が想定どおりであることを確認します。ファイルに無効な構成設定が含まれている場合、システムにより大きな値が適用されない可能性があり、ユーザー・アカウントがデフォルトの制限に達してエラーをトリガーする可能性があります。

      たとえば、1人のユーザーまたはすべてのユーザーの最大プロセス数を設定するための/etc/security/limits.confファイルの正しいエントリを次に示します。

      #<domain>      <type>  <item>         <value>
      
      *                hard    nproc           2048
      oracle           hard    nproc           65356
      root             hard    nproc           unlimited
      ノート

      limits.confファイルを使用すると、システムのデフォルトの制限を使用するかわりに、様々なシステム・リソースのカスタム・ユーザー制限を設定できます。詳細は、limits.conf(5)マニュアル・ページを参照してください。
  • システム制限の拡大
    • /etc/sysctl.confを編集して、システム全体の制限を増やします。たとえば、開いているファイルの最大数を設定するには:
      fs.file-max = 204708
    • システムをリブートして、変更内容を有効にします。
  • メモリーの問題を確認する
    • free -hを使用して、現在のメモリー使用量およびスワップ領域を確認します。たとえば:
      $ free -h
      total        used        free      shared  buff/cache   available
      Mem:           15Gi       727Mi        11Gi        16Mi       2.8Gi        14Gi
      Swap:         4.0Gi          0B       4.0Gi
    • メモリーが少ない場合は、スワップ領域を増やすか、RAMをアップグレードすることを検討してください。