質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.23%

javaがCPUを占領している?ためが、Macが昨日からずっと唸ってます。

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 4,534

qaz3330

score 113

イメージ説明

↑アクティビティモニタ

昨日からずっとMacbookairがうなっております。
原因がわからずひまずアクティビティモニタを見たところ、Javaというのが原因なのかなと思いました。ただ、それがわかったところで対処の仕方がわからず、調べている所、SMCリセットしたら改善したという記事がいくつかあったため、試しました。

しかし、ダメでした。

また、アクティビティモニタのプロセス一覧[Java]を選択した状態(画像の状態)で左上の[☓]ボタンを押し、プロセスを消したのですが、すぐに復活してしまい効果はありませんでした。

一晩様子を見ていたのですが、今朝になっても改善しなかったため、質問にいたりました。

どなたか原因がわかる方はいらっしゃいますでしょうか?

尚、最近いれたものとして思い当たるのは、
「scala」 と 「Intel IDEA」(IDE)です。

scalaが原因ってことは可能性としてあり得るのでしょうか?

ps ax | grep scala
1680 s000 R+ 0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn scala

宜しくお願いします。

javaは最新の状態です。

イメージ説明

追記

$ jps
2068 Elasticsearch
3268 Jps

$ jstack 2068

かなり多かったので一部のみ抜粋

"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)
"elasticsearch[Volcana][[timer]]" #13 daemon prio=5 os_prio=31 tid=0x00007ff1ac2db000 nid=0x5407 waiting on condition [0x00000001268ed000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at org.elasticsearch.threadpool.ThreadPool$EstimatedTimeThread.run(ThreadPool.java:703)

"Service Thread" #9 daemon prio=9 os_prio=31 tid=0x00007ff1ac82c000 nid=0x4b03 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread2" #8 daemon prio=9 os_prio=31 tid=0x00007ff1ab814000 nid=0x4903 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" #7 daemon prio=9 os_prio=31 tid=0x00007ff1ab813000 nid=0x4703 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #6 daemon prio=9 os_prio=31 tid=0x00007ff1ab812800 nid=0x4503 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" #5 daemon prio=9 os_prio=31 tid=0x00007ff1ab811800 nid=0x4303 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Surrogate Locker Thread (Concurrent GC)" #4 daemon prio=9 os_prio=31 tid=0x00007ff1ab801000 nid=0x370b waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" #3 daemon prio=8 os_prio=31 tid=0x00007ff1ab809000 nid=0x2f03 in Object.wait() [0x0000000123dca000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
    - locked <0x0000000794ceca40> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)

"Reference Handler" #2 daemon prio=10 os_prio=31 tid=0x00007ff1ac02e800 nid=0x2d03 in Object.wait() [0x0000000123cc7000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:502)
    at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:157)
    - locked <0x0000000794ce7dc0> (a java.lang.ref.Reference$Lock)

"VM Thread" os_prio=31 tid=0x00007ff1ac02b800 nid=0x2b03 runnable

"Gang worker#0 (Parallel GC Threads)" os_prio=31 tid=0x00007ff1ab01a800 nid=0x313 runnable

"Gang worker#1 (Parallel GC Threads)" os_prio=31 tid=0x00007ff1ab01b000 nid=0x230b runnable

"Gang worker#2 (Parallel GC Threads)" os_prio=31 tid=0x00007ff1ac008000 nid=0x2503 runnable

"Gang worker#3 (Parallel GC Threads)" os_prio=31 tid=0x00007ff1ac008800 nid=0x2703 runnable

"Concurrent Mark-Sweep GC Thread" os_prio=31 tid=0x00007ff1ab046800 nid=0x2903 runnable

"VM Periodic Task Thread" os_prio=31 tid=0x00007ff1ab84f000 nid=0x4d03 waiting on condition

JNI global references: 452

こういうのががいっぱい生成されてる・・・。

イメージ説明

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • qaz3330

    2016/02/03 15:09 編集

    もし可能でありましたら、ElasticsearchがなぜCPUを消費しているのか、原因と対策まで含めてこの質問とさせていただいて宜しいでしょうか?質問内容と少しずれてきてしまいますが、何卒宜しくお願いします。

    ちなみに、 $ elasticsearch stop みたいなコマンドはみあたらなかったため、最悪、uninstallするか、原因を特定し、解決するしかないかなと思っております。

    キャンセル

  • eripong

    2016/02/03 15:25

    了解です。そうであれば、Elasticsearchのバージョンやどのようにインストールしたのか、Javaのバージョンなども教えていただきたいです。Elasticsearchのログに何かエラーが出ていないかも確認したいです。また、jstackの結果については、CPUを消費しているスレッドの見当をつけたいので、runnableのスレッドを抜粋して頂けませんか?それから、GCの可能性もあるかと思うので、jvisualvmを起動して、Elasticsearchのプロセスを開いて、監視タブを画面キャプチャして質問に追加していただけますか?

    キャンセル

  • eripong

    2016/02/03 15:31 編集

    それと、分かる限りは対応しますが、
    Elasticsearchについて、私はそれほど詳しくはないので、タグにElasticsearchなど付け加えたほうが、良い回答がつくかもしれません。

    キャンセル

回答 2

+1

Javaに次いでCPU使用量が多いプロセスがmdsとmds_storeですから、これらが原因となっているのではないかと思われます。

下記ページに、mdsが暴走した際の対処方法が説明されているので、試してみては如何でしょうか。

Macが重くなった時に暴走しているプロセスと対処法4つ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/02/03 14:18

    スクリーンショットで見るとmdsとmds_storeのCPU使用率は足しても14.4%なので問題ないかと思いますが、どうでしょうか

    キャンセル

  • 2016/02/03 14:33

    javaのプロセスを停止しても復活するので、javaのプロセスを生成している別のプロセスが稼働している。javaがcpuの300%を消費しているのは異常で、プログラムが暴走していると思われる。mdsは暴走することは良く知られており、mdsと関連プロセスのmds_storeのcpu消費が大きい事から、mdsが原因ではないかと推測しました。

    キャンセル

  • 2016/02/03 14:53

    ご回答有難う御座います。
    Macが重くなった時に暴走しているプロセスと対処法4つ

    上記を基に、mds(Spotlight)暴走時の対処法
    を行いましたが、改善されませんでした。

    セーフブートモードで起動する(Shiftを押しながらOSを起動)はまだやってませんが、現在、修正依賴のところに上がってきたjstackをもとに、別の原因を探ってます。

    キャンセル

+1

現時点では原因は分かりませんが、わかる範囲で回答します。  
(追加情報があれば、改めて内容確認します。)

 原因からの対策

qaz3330さんが「情報の追加・修正の依頼」に書いている、
ES java very high CPU usage · Issue #4288 · elastic/elasticsearch  
ですが、ここではmarvelのインデックス削除によってCPU使用率が90%から4%になったと書いてある様です。  
インデックスを削除することはできますか?

 とりあえずElasticsearchを落とすには

もしHomebrewでインストールしたのであれば、ここにある様に、

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


でアンロードすれば停止はできるのではと思います。  
他の方法でインストールしたのであれば、その内容を記述してください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/02/03 16:02

    ひとまず、現時点で、
    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.elasticsearch.plist

    のかいあって、CPUは収まりました。
    根本解決はしていないので、引き続き、marvelの問題に取り組もうと思います。

    本当に色々とお手数をかけてすみません・・・。

    キャンセル

  • 2016/02/03 16:15

    runnableのスレッドですが、
    "Service Thread" #9 daemon prio=9 os_prio=31 tid=0x00007ff1ac82c000 nid=0x4b03 runnable [0x0000000000000000]
    の様に、"runnable"と入っているスレッドをスタックトレース込みで見たいです。

    visualvmについては、jvisualvmというコマンドがあると思うのですが、
    それを実行できませんか?

    インデックスの削除については、
    http://ameblo.jp/fcv-system/entry-11947559684.html
    が参考になりませんか?

    キャンセル

  • 2016/02/03 23:28

    度々有難う御座います。午後は外出などが重なり返答が遅れました。jvisualvmで、監視画面などを閲覧することができましたので、後ほど、runnableのスレッドなど、諸々含め、ログを出してみようと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.23%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る