問題現象:
Tomcat (8.5.13) は SuperMap iServer を導入しており、同時ユーザー数は約 100 です。システムがしばらく実行されると、サービスがクラッシュします。例外プロンプト
問題分析:
1. ログ内のプロンプト情報を見た後、システム メモリの不足が原因であると考えました。そこで、システム メモリと Tomcat メモリを 1 秒ごとに記録する監視スクリプトがサーバーに追加されました (以下を参照)。
一定期間監視した後、再び例外が発生しました。ログにメモリ例外は見つかりませんでした
2. メモリが除外された後、同時ユーザーが多すぎるためにプロセス数を超えているかどうかが考えられます。
1) 現在の Linux ユーザー ulimit -a
のリソース制限パラメーターを表示します。 2) 上記のパラメーターの中で、より注目を集めるのは、プロセスによって開くことができるファイルの最大数です。つまり、ファイルを開きます。システムによって作成できるプロセスの最大数は、max user process パラメータです。 ulimit -u 4096 を使用して最大ユーザープロセスの値を変更できますが、それは現在の端末のセッションでのみ有効になり、再度ログインした後でもシステムのデフォルト値が使用されます。
これを変更する正しい方法は、/etc/security/limits.d/90-nproc.conf ファイルの値を変更することです。まず、このファイルの内容を見てみましょう:
$ cat /etc/security/limits.d/90-nproc.conf # Default limit for number of user's processes to prevent # accidental fork bombs. # See rhbz #432903 for reasoning. * soft nproc 4096
上記のファイルの値 4096 を変更するだけです。
調査の結果、サーバーの現在のユーザーが設定した最大プロセス数が小さすぎるため、サーバーがプロセスの作成に失敗してクラッシュしたことが原因でした。
参照:
linux 現在のプロセスを表示:
以上がLinux での Tomcat エラー分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。