marvelプラグインが起因してか、CPUが増えております。


(HG) #1

昨日程からMACがうなっており、原因探る中で、marvelプラグインが起因しての問題のような気がします。

参照URL

ただ、これに対して、どのように対処してあげればよいのかわからず困っております。

elasticsearch stop といったことも、そもそもそのようなコマンドがない?ためできませんでした。

elasticsearchはまだ、経験が浅いので、こういう対処に慣れておりません。

宜しくお願いします。

$ jstack

"Attach Listener" #26851 daemon prio=9 os_prio=31 tid=0x00007ff1b15bc000 nid=0xbe7f waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"elasticsearch[Volcana][bulk][T#4]" #1437 daemon prio=5 os_prio=31 tid=0x00007ff1ac914800 nid=0x83ff waiting on condition [0x000000012acda000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000007952d4370> (a java.util.concurrent.LinkedTransferQueue)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
    at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
    at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
    at org.elasticsearch.common.util.concurrent.SizeBlockingQueue.take(SizeBlockingQueue.java:161)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Volcana][bulk][T#3]" #945 daemon prio=5 os_prio=31 tid=0x00007ff1aeb5d000 nid=0x8e7f waiting on condition [0x00000001366b3000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000007952d4370> (a java.util.concurrent.LinkedTransferQueue)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:737)
    at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
    at java.util.concurrent.LinkedTransferQueue.take(LinkedTransferQueue.java:1269)
    at org.elasticsearch.common.util.concurrent.SizeBlockingQueue.take(SizeBlockingQueue.java:161)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

"elasticsearch[Volcana][warmer][T#2]" #556 daemon prio=5 os_prio=31 tid=0x00007ff1b063a800 nid=0x9007 waiting on condition [0x000000012aa45000]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x0000000794f840b8> (a org.elasticsearch.common.util.concurrent.EsExecutors$ExecutorScalingQueue)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
    at java.util.concurrent.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:734)
    at java.util.concurrent.LinkedTransferQueue.xfer(LinkedTransferQueue.java:647)
    at java.util.concurrent.LinkedTransferQueue.poll(LinkedTransferQueue.java:1277)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1066)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)


(Masatoshi Hiraoka) #2

こんばんは

MACがうなっているということなので、ローカルにElasticsearchをインストールして実行されているのでしょうか?

インストールしているElasticsearchやmarvelプラグインのバージョン等の情報があると、
もっとわかりやすいかと思います!

起動ができたということは、Elasticsearchのバイナリを直接叩いているか、
もしくはplistなどでMACの自動起動リストに突っ込んでいるのかかと思いますが、
後者であれば下記コマンドで停止できるかと思います。

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.elasticsearch.plist

前者の場合は、対象のプロセスをkillしてしまうのが一番簡単かと思いますが。。

ちなみにmarvelはどういった意図で使われてますか?


(HG) #3

ご回答有難う御座います。

MACがうなっているということなので、ローカルにElasticsearchをインストールして実行されているのでしょうか?

はいそうです。
bew install でいれました。

インストールしているElasticsearchやmarvelプラグインのバージョン等の情報があると

失礼しました。

elasticsearch: 2.1.0

marvel : 以下のコマンドで入れました。バージョンはわかりませんでしたが、昨年の12月時点での最新バージョンかと思います。
/usr/local/bin/plugin install elasticsearch/marvel/latest

ひとまずは、仰るとおり、以下のコマンドでおさまりました。

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.elasticsearch.plist

elasticsarch然り、marvelは使用用途などは特になく、面白そうだったので、インストールしてローカルで試していました。

最悪marvelはアンインストールしたいのですが、

/usr/local/bin/plugin uninstall elasticsearch/marvel/latest

みたいなことができず・・・。


(Masatoshi Hiraoka) #4

@hase_gawa

こんばんわ

ご返信が遅れてしまい、すみません。

marvelのインストールはElasticsearchのプラグインとしてインストールされているんですね。
これは蛇足ですが、最新のmarvelはkibanaのプラグインとしてインストールすることができます。

https://www.elastic.co/downloads/marvel

さて、marvelのアンインストールですが、下記コマンドで可能かと思います。

/usr/local/bin/plugin remove elasticsearch/marvel/latest

検証ができていないのですが、恐らく大丈夫かと思います。

CPU負荷の根本解決には至っていませんが、とりあえずとして。。


(HG) #5

度々有難う御座います。

removeコマンドでアンインストール出来るんですね。

marvelのインストールはElasticsearchのプラグインとしてインストールされているんですね。

そうみたいです。
また、アンインストール時に気がついたのですが、
marvelではなくmarvel-agentというプラグイン?がインストールされているみたいです。

ちなみに、以下がmarvelアンインストール後のプラグインのリストです。

$ /usr/local/bin/plugin list
Installed plugins in /usr/local/Cellar/elasticsearch/2.1.0_1/libexec/plugins:
    - analysis-kuromoji
    - head
    - license

marvelを削除したのですが、依然としてJavaのCPU負荷が改善されませんでした・・・。


(HG) #6

また気になったこととしましては

# License will expire on [Sunday, February 14, 2016]. If you have a new license, please update it.
# Otherwise, please reach out to your support contact.

このログがでていたので、Licenseをアンインストールし、/usr/local/bin/plugin install elasticsearch/license/latest
としました。

しかし、こちらもまた、同じログがでており、最新のpluginが入らないみたいです。

というのと、以下のログも気になります。
translogファイルが見当たらない?ことによるエラー。

java.nio.file.NoSuchFileException: /usr/local/var/elasticsearch/elasticsearch/nodes/1/indices/.marvel-es-data/0/translog/translog-5703132566325233645.tlog
  at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
  at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
  at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
  at sun.nio.fs.UnixFileSystemProvider.implDelete(UnixFileSystemProvider.java:244)
  at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
  at java.nio.file.Files.delete(Files.java:1126)
  at org.elasticsearch.index.translog.Translog.recoverFromFiles(Translog.java:324)
  at org.elasticsearch.index.translog.Translog.<init>(Translog.java:166)
  at org.elasticsearch.index.engine.InternalEngine.openTranslog(InternalEngine.java:209)
  at org.elasticsearch.index.engine.InternalEngine.<init>(InternalEngine.java:152)
  at org.elasticsearch.index.engine.InternalEngineFactory.newReadWriteEngine(InternalEngineFactory.java:25)
  at org.elasticsearch.index.shard.IndexShard.newEngine(IndexShard.java:1408)
  at org.elasticsearch.index.shard.IndexShard.createNewEngine(IndexShard.java:1403)
  at org.elasticsearch.index.shard.IndexShard.internalPerformTranslogRecovery(IndexShard.java:906)
  at org.elasticsearch.index.shard.IndexShard.performTranslogRecovery(IndexShard.java:883)
  at org.elasticsearch.index.shard.StoreRecoveryService.recoverFromStore(StoreRecoveryService.java:245)
  at org.elasticsearch.index.shard.StoreRecoveryService.access$100(StoreRecoveryService.java:56)
  at org.elasticsearch.index.shard.StoreRecoveryService$1.run(StoreRecoveryService.java:129)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  at java.lang.Thread.run(Thread.java:745)

CPU負荷と直接関係するかわかりませんが、

$ elasticsearch

としたときに出てきたログです。


(Jun Ohtani) #7

CPUについて

直接の原因かはわかりませんが。
Marvelは日ごとにインデックスを作っていきます。これらは、自動で削除されるものではありません。それらを定期的に削除する必要があります。
Curatorなどのツールを使うか、ご自身で削除されるのが良いかと思います。
https://www.elastic.co/guide/en/elasticsearch/client/curator/current/index.html
インデックスが多数あるということは、扱うファイル数やメモリなども大きくなりますので。
あとは、入れているデータ、メモリのサイズなども影響があるかと。

ライセンスについて

ライセンスは30日のトライアルライセンスが付いていますが、
正式に利用する場合は登録していただく必要があります。
登録方法などは、こちらをご覧ください。
https://www.elastic.co/guide/en/marvel/current/license-management.html#license-management


(HG) #8

ご回答有難う御座います。

Marvelは日ごとにインデックスを作っていきます。

たくさんインデックスができていた原因がわかりました。
以下のように、ひとまず、closeにしました。deleteはクリックしてもdeleteしてくれなかったため。

また、elasticsearchに格納しているノードで、使っていないノードはすべて消しました。

しかし、依然として解決しませんでした・・・。

failed to delete temp
というエラーが多数出てきました・・・。

[2016-02-09 14:34:03,467][WARN ][index.translog           ] [Jacob "Jake" Fury] [hoge][2] failed to delete temp file /usr/local/var/elasticsearch/elasticsearch/nodes/0/indices/hoge/2/translog/translog-2559579035719160946.tlog
java.nio.file.NoSuchFileException: /usr/local/var/elasticsearch/elasticsearch/nodes/0/indices/hoge/2/translog/translog-2559579035719160946.tlog

marvel-agentはインストールされてるはずなのですが・・・。

➜  ~  /usr/local/bin/plugin list
Installed plugins in /usr/local/Cellar/elasticsearch/2.1.0_1/libexec/plugins:
    - analysis-kuromoji
    - head
    - license
    - marvel-agent

(HG) #9

最悪、elasticsearchをアンインストールし、再インストールしようと思ってます。

brew uninstall はあまり安易にしないほうがいいということを昔聞いたことがあります。
elasticsearchの場合、再インストールする場合、どのようにするのがオススメなのでしょうか?

一番簡単なのは以下だと思いますが・・・。

brew uninstall elasticseach 
brew install elasticseach

(system) #10