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

推薦する

UbuntuはPythonスクリプトのサンプルコードを定期的に実行する

オリジナルリンク: https://vien.tech/article/157序文この記事では、Ub...

QQtabBar による CSS 命名仕様 BEM の詳細な紹介

QQtabBar の BEMまず、BEMとはどういう意味でしょうか? BEM は、ブロック、要素、修...

Docker ベースの MySQL マスタースレーブ レプリケーションを実装する方法

序文MySQL マスター/スレーブ レプリケーションは、アプリケーションの高パフォーマンスと高可用性...

Dockerコンテナの状態変換の実装

Dockerコンテナの状態遷移図2度目の実戦 [root@localhost ~]# docker ...

MySQL の従来のソート、カスタム ソート、中国語のピンイン文字によるソート

MySQL の通常のソート、カスタム ソート、中国語のピンイン文字によるソート。実際の SQL を記...

MySQL の最初のインストールが成功した後にパスワードを初期化する手順

ファイルをディレクトリに解凍しますこれは解凍後のディレクトリですmy.iniファイルを入力しますダブ...

CSS の位​​置属性 (absolute|relative|static|fixed) の概要と応用

まず、CSS3 Api の position 属性の定義を見てみましょう。 static: 特別な配...

Vue の this.$store.state.xx.xx に関する簡単な説明

目次これを Vue.$store.state.xx.xxストアからデータを取得する私のプロジェクトフ...

MySQL 制約の超詳細な説明

目次MySQL 制約操作1. 非ヌル制約2. ユニーク制約3. 主キー制約4. 外部キー制約5. カ...

JavaScript実行メカニズムの詳細な紹介

目次1. プロセスとスレッドの概念2. ブラウザの原則3. 同期と非同期4. 実行スタックとタスクキ...

Linux (Ubuntu) での MySQL 5.7.17 のインストールと設定のチュートリアル

序文以前、MySQL 5.6 をインストールしました。3 か月後、開発者から MySQL で JSO...

Vue 開発ガイドの重要な知識の要約

目次概要0. JavaScriptとWeb開発の基礎1. Vueの基本概念Vue コア機能コンポーネ...

JavaScript が重複したネットワークリクエストを防ぐ方法の例

序文開発中は、インターフェース要求の繰り返しによってさまざまな問題が発生することがよくあります。ネッ...

CSS と Bootstrap アイコンを使用して、上下にジャンプするインジケーター矢印のアニメーション効果を作成します。

ページが非常に長い場合は、下にさらにコンテンツがあることをユーザーに知らせるために矢印が必要になるこ...

非ルートユーザーを使用してDockerコンテナでスクリプト操作を実行する

アプリケーションをコンテナ化した後、Docker コンテナを起動すると、デフォルトで root ユー...