SpringBoot プロジェクトの Docker 環境を実行するときに発生する無限再起動問題の詳細な説明

SpringBoot プロジェクトの Docker 環境を実行するときに発生する無限再起動問題の詳細な説明

もしかしたら私の考え方が間違っていたのかもしれないし、問題の説明が少し乱雑だったのかもしれないが、ここでの解決策が私と同じ問題に遭遇した他の人たちの役に立つことを願っている。

説明: Springboot プロジェクトは Docker イメージで実行されます。Docker ログを見ると、プロジェクトが正常に開始された後、約 1 分後に自動的に再起動し、Web サイトのインターフェイスにアクセスすると nginx が 502 ゲートウェイなどを報告します。サーバーは 2 つあり、1 つはファイル サーバーで、ファイルのアップロードとダウンロード、トークンの検証を行う非常に単純なコードを実行し、もう 1 つは Java アプリケーションを実行します。両方のサーバーが同時にプロジェクト イメージを更新しています。実行後、この問題が発生しましたが、これは非常に奇妙です。

次に、プロジェクトを jar パッケージにして、java -jar xxx.jar を使用してアプリケーション サーバーで直接実行しました。すると、いくつかの場所で停止し、起動を続行できなくなったり、強制終了されたと表示されたりしました。

画像A

プロジェクトのメモリリークが原因でプロセスがシステムによって強制終了されたのではないかと疑い、以前のdockerイメージに変更しましたが、結果は同じでした。nginxの設定が変わったのではないかと疑いましたが、それでもうまくいきませんでした。その後、独自のAlibaba Cloudサーバーに変更して最新のイメージを実行したところ、問題はありませんでした。まったく正常でした。Alibaba Cloudでjarパッケージを実行しても正常でした。そこで、システムが変更されてこの問題が発生したのではないかと疑いました。そこでtopを見てみたところ、

CPU 使用率が高すぎます。非常に異常な未知のプロセスがあります。Baidu で検索して、このコードが定期的に実行するコマンドがわかったので、解決しようとしました。(追記: これは私たちがインストールしたものではなく、オンライン環境でこれを実行したこともありません)

まずステータスを確認します: systemctl status crond

次に、設定されているコマンドを確認します: crontab -e

0 を変更しました。以前は * でした。0 に変更し、保存して終了しました。

次にサービスを停止します: systemctl stop crond

最後に、top をチェックします。プロセスがまだ存在する場合は、直接 kill してから ojbk します。残念です。解決するのに半日かかりました。

SpringBoot プロジェクトの docker 環境で実行する場合の無限再起動問題に関するこの記事はこれで終わりです。SpringBoot docker 無限再起動に関するその他の関連コンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerで複数のSpringbootを実行するための詳細なチュートリアル
  • DockerでSpringbootプロジェクトを実行する方法
  • Docker で Springboot プロジェクトを実行する実装

<<:  JS で async await をエレガントに使用する方法

>>:  重要なmysqlログファイルの概要

推薦する

MySql インデックス使用戦略の分析

MySql インデックスインデックスの利点1. 一意のインデックスまたは主キー インデックスを作成す...

JQuery を放棄すべきでしょうか?

目次序文jQuery 以外の場合は何を使うのでしょうか? DOMとイベントAJAX リクエスト要約す...

Sitemesh チュートリアル - ページ装飾技術の原理と応用

1. 基本概念1. Sitemeshはページ装飾技術です。 1 : フィルターを通してページアクセス...

MySQL 10進数符号なし更新負数を0に変換

今日、インターフェースの同時実行の問題を検証したところ、これまでredisで解決していた同時実行のプ...

nginx/apache 静的リソースのクロスドメインアクセスの問題を解決する詳細な説明

1. Apache 静的リソースのクロスドメイン アクセスApache設定ファイルhttpd.con...

HTML におけるスクリプトの配置に関する簡単な説明

以前は、スクリプトは HTML 内のどこにでも配置できると思っていましたが、今日、要件に取り組んでい...

MySQL 5.7.17 のインストールと設定のグラフィックチュートリアル

ブロガーはこう述べています。「私は『史上最も簡単な MySQL チュートリアル』という一連のブログ記...

MySQL でのインデックスの追加と削除に関連する操作

目次1. インデックスの役割2. インデックスの作成と削除(1)ALTER TABLE文を使用して、...

MySQLデータのバックアップとリカバリの実装方法の分析

この記事では、例を使用して MySQL データのバックアップと復元の方法について説明します。ご参考ま...

JavaScript でクールなマウス テーリング効果を実装

これを見た後、あなたにも手ができて、さまざまな美しい小さなしっぽを作れるようになることを保証します!...

LINUX での IPTABLES ファイアウォールの基本的な使用方法のチュートリアル

序文パブリック IP を持つ本番 VPS の場合、必要なポートのみが開かれ、IP とポートを制御する...

Navicat PremiumでSQLファイルをインポートする方法

今日、最終プロジェクトに取り組み始めましたが、今年はMySQLデータベースを使用したため、Navic...

Centos8 システムの VMware インストール チュートリアル図 (中国語グラフィカル モード)

目次1. ソフトウェアとシステムイメージ2. 仮想マシンを作成する3. CentOS8をインストール...

Linux ファイル記述子、ファイルポインタ、および inode の詳細

目次Linux - ファイル記述子、ファイルポインタ、インデックスノード1. Linux - ファイ...

JavaScript継承のさまざまな方法とメリット・デメリットを詳しく解説

目次1. プロトタイプチェーン継承2. コンストラクタの借用(古典的な継承) 3. 組み合わせ継承4...