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を使用して移動可能なスタックウィジェット機能を作成する

推薦する

MySQLデータテーブルの基本操作:テーブル構造の操作、フィールド操作例の分析

この記事では、テーブル構造操作やフィールド操作など、MySQL データ テーブルの基本的な操作につい...

jQueryはショッピングカートの完全な機能を実現します

この記事では、ショッピングカートの完全な機能を実現するためのjQueryの具体的なコードを参考までに...

クラウドサーバーはBaotaを使用してPython環境を構築し、Djangoプログラムを実行します。

目次PagodaをインストールするPythonランタイム環境を構成するPythonをインストールする...

Zabbix はどのようにして ssh 経由でネットワーク デバイス データを監視および取得するのでしょうか?

シナリオシミュレーション:ある会社の運用保守担当者は、以前購入した一連のネットワーク機器の光ポートの...

localStorageの有効期限を設定するいくつかの方法

目次問題の説明1. 基本的な解決策2. 中間的な解決策3. 高度なソリューション4. ハードコアソリ...

VMware 15 を使用して仮想マシンをインストールし、CentOS 8 を使用する詳細な手順

序文:現在、Linux と .Net Core を学習しており、クロスプラットフォームの知識を学んで...

Vue3 の ref と toRef の違いを簡単に分析します

1. refがコピーされ、ビューが更新されますrefを使用してオブジェクトのプロパティ値をレスポンシ...

Win7 での Mysql 5.7.17 winx64 インストール チュートリアル

ソフトウェア バージョンとプラットフォーム: MySQL-5.7.17-winx64、win7 Ho...

Linux システムでの Selenium クローラー プログラムの導入の概要

目次序文1. セレンとは何ですか? 2. 使用手順1. ライブラリをインポートする2. テストコード...

MySQL のロックの仕組みと使用法の分析

この記事では、例を使用して MySQL のロック メカニズムと使用方法を説明します。ご参考までに、詳...

Vue+flaskで動画合成機能を実現(ドラッグ&ドロップアップロード)

目次ドラッグアンドドロップアップロードについては以前の記事で書きました。ファイルをアップロードするF...

Vue プロジェクト @change 複数のパラメータを使用して複数のイベントを渡す

まず、変更イベントは 1 つだけです。 changelevel() //値を選択選択を変更して行の値...

MySQL 最適化 Zabbix パーティション最適化

zabbix を利用する上での最大のボトルネックはデータベースです。zabbix のデータストレージ...

JVMシリーズのメモリモデルの詳細な説明

目次1. メモリモデルとランタイムデータ領域2. マインドマップと凡例3. オブジェクトはJVMから...