nGinx がシャットダウンし続ける

nGinx がシャットダウンし続ける

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 サーバーのメモリ使用量を減らすことができます。

答え3

追加スワップまた、資格情報や権限に問題がないことを確認してください。

また、これ一部のアプリで使用できる RAM が制限されているという質問です。これらのワーカーは何をするのでしょうか? これが答えになるかもしれません。

また、アップデートすべて?

関連情報