
nginxプロセスがシャットダウンし続けます。エラーは次のとおりです。
2023/04/18 11:47:29 [alert] 11073#0: worker process 11312 exited on signal 9
2023/04/18 11:47:29 [alert] 11073#0: fork() failed while spawning "worker process" (12: Cannot allocate memory)
2023/04/18 11:47:29 [alert] 11073#0: could not respawn worker process
十分な RAM があることはわかっています。これは私が管理する VPS で、RAM を 4GB まで増やしましたが、それでも同じです。これは非常に軽量な nginx サーバーで、PHP はなく、シンプルな画像サービスです。nginx 1.0.15 を実行しています。古いことはわかっていますが、何年も問題なく動作していました。この VPS は何年も何も変わっていません。
答え1
fork() failed while spawning "worker process" (12: Cannot allocate memory)
手がかりです。
見れば、man 2 fork
どのような条件がその位置に至るのかがわかります。
ENOMEM fork()
メモリが不足しているため、必要なカーネル構造を割り当てることができませんでした。
ENOMEM
「init」プロセスが終了したPID名前空間で子プロセスを作成しようとしました。pid_namespaces(7)を参照してください。
これら 2 つの条件のいずれかであるはずです。VPS 全体がほぼ同時に再起動されますか? そうであれば、答えは出ています。
ps -o lstart 1
コンテナ内で実行してプロセスがいつ開始されたかを確認してもわからない場合は、これをテストできる可能性がありますinit
。
それ以外の場合、「メモリが不足しています」と表示されているのにこのエラーが表示される場合は、システム全体のメモリが不足している可能性があります。これはコンテナ内ではわからないため、ホスティング プロバイダーに詳細情報を要求する必要があります。
答え2
signal 9
提供されたエラー メッセージに基づくと、ワーカー プロセスは (シグナルを示す)により終了しているようですSIGKILL
。また、エラー メッセージは () を示唆しており、fork() system call is failing
これはプロセスが新しい子プロセスを作成できないことを意味します。
「メモリを割り当てられません」というエラー メッセージは、システムのメモリが不足している可能性があり、fork() システム コールが失敗する原因になっている可能性があることを示しています。この問題の解決策の 1 つは、システムで使用可能なメモリの量を増やすことです。
「free -tm」コマンドを使用して、サーバー上で使用可能なメモリを確認できます。このコマンドは、使用可能なメモリとスワップ領域に関する情報を表示します。システムのメモリが不足している場合は、サーバーにメモリを追加するか、メモリの使用量を減らすように nginx 構成を調整する必要がある可能性があります。
もう 1 つの解決策は、nginx 構成のワーカー プロセスの数を減らすことです。これは、nginx.conf ファイルの「worker_processes」設定を調整することで実行できます。ワーカー プロセスの数を減らすと、nginx サーバーのメモリ使用量を減らすことができます。