dockerエラーの原因分析 終了しました (1) 4分前

dockerエラーの原因分析 終了しました (1) 4分前

Dockerエラー

1. 原因を確認する

docker ログ ネクサス

2. エラーの原因

OpenJDK 64 ビット サーバー VM の警告: INFO: os::commit_memory(0x00000000e7000000, 419430400, 0) が失敗しました。エラー = 'メモリを割り当てられません' (errno = 12) # # Java ランタイム環境を続行するためのメモリが不足しています。 # ネイティブ メモリ割り当て (mmap) で、予約済みメモリをコミットするための 419430400 バイトのマップに失敗しました。 # 詳細情報を含むエラー レポート ファイルは、次の場所に保存されます: # /opt/sonatype/nexus/hs_err_pid1.log

追加知識: Docker を使用して ElasticSearch をインストールおよび実行するときに問題が発生します。

ES のバージョン 6.4.3 を作成した後、起動すると、しばらくすると ES が自動的に終了することがわかりました。

理由は、ES によって割り当てられたデフォルトのメモリが大きすぎるためと思われます。プロセスは自動的に終了しました。

それで、このピットを以下に記録しておきます:

ES ツールクラスインデックスを使用してテストメソッドを実行するときにエラーが発生しました

org.elasticsearch.transport.ConnectTransportException: [][192.168.235.9300] connect_timeout[30秒]

SpringBoot 2.x を使用してインポートされた ES パッケージは、Docker にインストールされている ES バージョンと互換性がないことが判明しました。

SpringBoot 2.1.3 で導入された Spring-Data-ES パッケージは 3.1.5 です。

DockerによってインストールされたESバージョンは5.6.12です

適応関係については公式ドキュメントをご覧ください:

3.1.XにはESバージョン6.2.2以上が必要であることが判明しました

私のプロジェクトに統合されているES Jarパッケージは6.4.3です

次にDockerにESバージョン6.4.3をインストールします

以下の処理を高速化するために、公式の Docker China イメージを使用します。

# docker pull registry.docker-cn.com/library/elasticsearch:6.4.3

ダウンロード後、コンテナを作成して起動します。

//すべてのローカルイメージを一覧表示# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
registry.docker-cn.com/library/rabbitmq 3-management 92682ab7dca0 12日前 212MB
registry.docker-cn.com/library/elasticsearch 6.4.3 01e5bee1e059 4か月前 795MB
registry.docker-cn.com/library/elasticsearch 最新 5acf0e8da90b 5 か月前 486MB

ES バージョン 5.0 以降に割り当てられるデフォルトのメモリは 2G なので、Docker を作成するときには 1G が必要になります。そのため、パラメータで環境変数を設定できます。

対応するjvm.options設定を変更することもできます。

6.4.3を実行するESを作成します

# docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9201:9200 -p 9301:9300 --name ES02 01e5bee1e059

その後、以下の状況が発生した後、ESコンテナは自動的に停止しました。 :

OpenJDK 64 ビット サーバー VM の警告: オプション UseConcMarkSweepGC はバージョン 9.0 で非推奨となり、将来のリリースで削除される可能性があります。
[2019-03-06T03:29:17,534][INFO ][oenNode ] [] 初期化中...
[2019-03-06T03:29:17,680][INFO ][oeeNodeEnvironment ] [gV0jbyu] 使用 [1] データパス、マウント [[/ (rootfs)]]、ネット使用可能領域 [13.6gb]、ネット合計領域 [16.9gb]、タイプ [rootfs]
[2019-03-06T03:29:17,681][INFO ][oeeNodeEnvironment ] [gV0jbyu] ヒープサイズ [247.6mb]、圧縮された通常のオブジェクトポインター [true]
[2019-03-06T03:29:17,690][INFO ][oenNode ] [gV0jbyu] ノード名はノードID [gV0jbyuBSrmiqJJ8p524XA] から派生しました。[node.name] を上書きするように設定します
[2019-03-06T03:29:17,691][INFO ][oenNode ] [gV0jbyu] バージョン[6.4.3]、pid[1]、ビルド[default/tar/fe40335/2018-10-30T23:17:19.084789Z]、OS[Linux/3.10.0-957.5.1.el7.x86_64/amd64]、JVM["Oracle Corporation"/OpenJDK 64-Bit Server VM/10.0.2/10.0.2+13]
[2019-03-06T03:29:17,691] [情報] [oennode] [gv0jbyu] JVM引数[-xmx1g、-xx:+useconcweepgc、-xx:cmsinitiatingoccupcance = cmsiniatingoccupcing:75、-xx: s1m、-djava.awt.headless = true、-dfile.encoding = utf -8、-djna.nosys = true、-xx:-omitstacktraceinfastthrow、-dio.netty.nounsafe = true、-dio.netty.nokeysetoptimizati shutdownhookenabled = false、-dlog4j2.disable.jmx = true、-djava.io.tmpdir =/tmp/elasticsearch.gvv4iesy、-xx:+heapdumponoutofmemoryerror、-xx:heapdumppath = data、-xx:logs/hsxx +age = trace、safepoint:file = logs/gc.log:utctime、pid、tags:filecount = 32、filesize = 64m、-djava.locale.providers = compat、compat、useavx = 2、-des.cgroups.hierarchy. share/elasticsearch、-des.path.conf =/usr/share/elasticsearch/config、-des.distribution.flavor = default、-des.distribution.tal = tar]
[2019-03-06T03:29:22,164][INFO ][oepPluginsService ] [gV0jbyu] モジュール [aggs-matrix-stats] をロードしました
。
。
。
[2019-03-06T03:29:26,129][WARN ][oedsScriptModule ] スクリプト: 欠落しているドキュメント値に対してデフォルト値を返すことは非推奨です。将来のメジャー バージョンと動作の互換性を保つには、システム プロパティ '-Des.scripting.exception_for_missing_value=true' を設定してください。
[2019-03-06T03:29:30,804][INFO ][oexsasFileRolesStore] [gV0jbyu] はファイル [/usr/share/elasticsearch/config/roles.yml] から [0] 個のロールを解析しました
[2019-03-06T03:29:31,986][INFO ][oexmjplCppLogMessageHandler] [controller/62] [Main.cc@109] コントローラー (64 ビット): バージョン 6.4.3 (ビルド 7a0781676dd492) Copyright (c) 2018 Elasticsearch BV
[2019-03-06T03:29:32,929][INFO ][oedDiscoveryModule ] [gV0jbyu] 検出タイプ [zen] の使用
[2019-03-06T03:29:34,282][INFO][oenNode] [gV0jbyu] 初期化されました
[2019-03-06T03:29:34,283][INFO ][oenNode ] [gV0jbyu] 開始しています...
[2019-03-06T03:29:34,625][INFO][oetTransportService] [gV0jbyu] 公開アドレス {172.17.0.2:9300}、バインドされたアドレス {0.0.0.0:9300}
[2019-03-06T03:29:34,656][INFO ][oebBootstrapChecks ] [gV0jbyu] 非ループバックアドレスにバインドまたは公開し、ブートストラップチェックを実施しています
エラー: [1] ブートストラップチェックに失敗しました
[1]: 最大仮想メモリ領域 vm.max_map_count [65530] は低すぎます。少なくとも [262144] に増やしてください。
[2019-03-06T03:29:34,721][INFO ][oenNode ] [gV0jbyu] 停止しています...
[2019-03-06T03:29:34,760][INFO][oenNode] [gV0jbyu] 停止しました
[2019-03-06T03:29:34,760][INFO ][oenNode ] [gV0jbyu] 終了しています...
[2019-03-06T03:29:34,778][INFO][oenNode] [gV0jbyu] 閉鎖
[2019-03-06T03:29:34,780][INFO ][oexmjpNativeController] ネイティブ コントローラー プロセスが停止しました。新しいネイティブ プロセスを開始できません

エラーログを出力し、大まかに翻訳すると次の文が表示されました。

[1]: 最大仮想メモリ領域 vm.max_map_count [65530] は低すぎます。少なくとも [262144] に増やしてください。

最大仮想メモリ領域 vm.max_map_count が 65530 に設定されていますが、これは低すぎるため、少なくとも 262144 に増やす必要があるとのことです。

設定方法についてはBaiduでネット検索しました。

# sudo sysctl -w vm.max_map_count=262144

そして再びESを始めます

# docker ES02 を起動します

後でもう一度ステータスを確認してみましょう。

# docker ps -a
コンテナID イメージ コマンド 作成ステータス ポート名
bdaed6794ca6 5acf0e8da90b "/docker-entrypoint.…" 5 分前 終了 (130) 6 秒前 ES01
7d2dcc5512ee 01e5bee1e059 "/usr/local/bin/dock…" 3 時間前 15 分前に起動 0.0.0.0:9201->9200/tcp、0.0.0.0:9301->9300/tcp ES02
d372501cc505 92682ab7dca0 "docker-entrypoint.s…" 4日前 終了 (0) 22時間前 myrabbitmq

正常に起動していることが確認できたら、http に対応するポートにアクセスしてみましょう。

http://192.168.235.128:9201/

インストールした ES のバージョン 6.4.3 では問題がないことがわかりました。

dockerエラーExited (1) 4分前の原因分析は以上です。参考になれば幸いです。123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker に Elasticsearch 7.6.2 をインストールするチュートリアル
  • DockerがElasticsearch7.xを起動してエラーを報告する問題を解決する
  • Dockerコンテナの状態変換の実装
  • docker runコンテナの自動終了の解決策
  • docker run後、ステータスは常にExitedになります
  • Docker クリーンアップ環境操作

<<:  HTML における水平および垂直の中央揃え方法の詳細な説明 (基礎)

>>:  Flutterを使用して移動可能なスタックウィジェット機能を作成する

推薦する

Alpine Dockerイメージフォント問題解決操作

1. フォントを実行し、フォント フォルダーを開いて、使用するフォント ファイルを見つけます。 2....

Javascript 構造化代入の詳細

目次1. 配列の分解2. オブジェクトの分解3. 不完全な解体4. 分割代入を使用して変数交換を実装...

JavaScript を使用してカルーセル効果を実装する

この記事では、カルーセルマップの特殊効果を実現するためのJavaScriptの具体的なコードを参考ま...

テーブルのネストと境界の結合の問題に対する解決策

【質問】外側のテーブルと内側のテーブルがネストされていて、内側のテーブルと外側のテーブルの両方に境界...

FirefoxのWeb開発者を使用してWebページのスタイルを無効にする方法

前提条件: Web開発者プラグインがインストールされている操作手順: [ツール] -> [We...

Bツリー挿入プロセスの概要

前回の記事 https://www.jb51.net/article/154153.htm では、B...

MySQL ストアド プロシージャの in、out、inout パラメータの例と概要

ストアドプロシージャ1. ストアドプロシージャを作成し、グローバル変数を表示する mysql>...

ウェブデザインにおける階層化インターフェースの設計経験

多くのネットユーザーは、なぜ自分のウェブサイトはいつも色の問題を抱えていて、いつも地味に見え、注目を...

Vue を使用した Amap アプリケーション開発のベスト プラクティス

目次序文非同期読み込みパッケージコンポーネントコンポーネントの使用インターフェースをカスタマイズする...

Linux xargsコマンドの使用

1. 機能: xargs は、stdin 内のスペースまたは改行で区切られたデータをスペースで区切ら...

Dockerコンテナとローカルマシン間でファイルを転送する方法

ホストとコンテナ間でファイルを転送するには、コンテナの完全な ID が必要です。取得方法は以下の通り...

MySQLでSQL文がどのように実行されるかの詳細な説明

概要最近MySQL関連の知識を勉強し始めました。学んだ知識ポイントと自分の理解を元に整理して共有しま...

HTML タグのメタ概要、HTML5 のヘッド メタ属性の概要

序文metaはhtml言語のhead領域にある補助タグです。おそらく、これらのコードは不要だと思うで...

よく知られているブラウザのDOCTYPEモード選択メカニズム

ドキュメントの範囲この記事では、Firefox やその他の Gecko ベースのブラウザ、Safar...