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ログファイルの概要

推薦する

入力テキストボックスの入力実装プロパティを無効にする

今日は、開発でよく使われる、非常に便利な HTML タグをいくつかまとめてみたいと思います。これらの...

さまざまな Tomcat ログと catalina.out ファイルのセグメンテーションの関係についての簡単な分析

Tomcatログの関係一枚の写真は千の言葉に値する! localhost.{yyyy-MM-dd}....

CentOS 7 で MySQL 8 の複数のインスタンスを設定する詳細なチュートリアル (必要な数だけ設定できます)

原因最近、プロジェクトのリファクタリングを始めたのですが、マスタースレーブと読み取り書き込み分離を使...

JS 4つの楽しいハッカー背景効果コードを共有する

目次例1例2例3例4例1 <html> <ヘッド> <title>...

JavaScript ウェブページ入門開発詳細説明

パート3: ❤バックエンドデータ受信を見落とす3つの方法❤ (おすすめ集)パート 2: Web フォ...

22 Vue 最適化のヒント (プロジェクトの実践)

目次コードの最適化v-for でキーを使用するv-if/v-else-if/v-else でキーを使...

Vue で Openlayer を使用して読み込みアニメーション効果を実現する

注意: スコープアニメーションは使用できません。 ! ! ! GIF経由 <テンプレート>...

jsのイベントオブジェクトを深く理解しましょう

JS でよく使用されるイベントは次の通りです。ページイベント: load;フォーカス イベント: フ...

テーブル設定の背景画像が100%表示されない解決策

開発中に以下の状況が発見されました。 (1) ファイルが.jspファイル拡張子で保存されている場合、...

Dockerとiptablesとブリッジモードのネットワーク分離と通信操作の実装

Docker は、ブリッジ、ホスト、オーバーレイなどの複数のネットワークを提供します。同じ Dock...

フロントエンド開発者は毎日HTMLタグの理解を学ばなければならない(1)

2.1 セマンティクス化により、Webページが検索エンジンに理解されやすくなりますこの章では、We...

HTML にネストされた div の無効なマージンに対する解決策

div がネストされているときに margin が機能しない問題の解決策を次に示します。さて、マージ...

mysql はフィールドコンテンツの一部を置き換え、mysql は関数 replace() を置き換えます。

[mysql] replace の使用方法 (フィールドの内容の一部を置き換える) [mysql]...

メタを使用してトラフィックキャッシュをキャンセルし、ページにアクセスするたびにページを更新して簡単にデバッグできるようにします。

コードをコピーコードは次のとおりです。 <!-- ブラウザがローカル キャッシュからページにア...