ログイン・トラブルシューティング
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をアップグレードすることを検討してください。