こんにちは、ミドルウェア開発チームの青木(@a_o_k_i_n_g)です。将来の夢は川口浩探検隊に入ることです。 先日、弊社のアプリケーションサーバーで大量にメモリを消費するという現象に遭遇しました。アクセス頻度の低いサーバーがメモリを大量消費するという謎深いものでした。 発生当初の状況はこんな感じです。 アプリケーションサーバーでは Jetty が稼働 現象が発生した JVM は 5GB 程度のメモリを消費しており、明らかに通常ではない量のメモリを消費している 複数台のサーバーで発生していたが、全てで発生したわけではない。 また、発生したサーバーはいずれもアクセス頻度が少ないサーバーだった。 ヒープ、パーマネント、スタック ひとまず、JVM でトラブルが発生した時は何はともあれヒープダンプとスレッドダンプを見るに限ります。各種情報の取得をインフラ部隊へ依頼し、得られたヒープを解析すると、
みなさんJMXは使っていますか?Javaアプリケーションのメモリ使用量を始めとした統計情報を取得したりできる、運用には欠かせないモニタリング・管理の仕組みですが、統計情報を蓄積する方法に悩んでいる方も多いのではないでしょうか。 今回はアプリケーションから取得できる様々な統計情報をfluentd経由で蓄積し、分析やトラブルシュートに活用する方法を紹介します。 JMX用のfluentdプラグイン JMXの統計情報をfluentdで収集するfluent-plugin-jolokiaというプラグインを使います。 fluent-plugin-jmxではなくfluent-plugin-jolokia?と思われるかもしれません。 JolokiaはJMXをJSONベースのREST APIとして提供するためのエージェントです。fluentdのプラグインはRubyで書かれていますが、Rubyから直接JMXのプ
ちょっと前までアプリケーションの管理をするなんて思いもよらなかったのではないですか。 サーバ系で動くアプリケーションであっても、ログを書くぐらいで管理云々なんてそれほどいわれてなかったような気がします。 しかし、時代は変わりました。The Times They Are A-Changin' なのです。 24/7 のアプリケーションは当たり前。けしって止めることのできないアプリケーションもたくさんあります。特にコンテナになるようなアプリケーション、たとえば Tomcat などは、その上で動作するコンポーネントの管理をすることが必須になります。 そこで登場するのが Java Management Extension (JMX) です。JMX は JSR-003 で標準策定された、アプリケーション管理のためのフレームワークです。 くしくも J2EE 1.4 では一足先に JMX が取り込まれてい
ちょっとJVMってかMBeanの情報をぶっこぬくツールを作る必要があって、最初jythonで作ったんだけどjythonにはいろいろ失望した。で、同僚にJolokiaってのがあると教えてもらったのですが、これがなかなかイケてる。Jolokiaというのは、簡単に言うと、MBeanにHTTP経由でアクセスできるようにjmxの口を空けてくれるJavaのエージェント。こいつをJavaプログラムやJavaなミドルウェアに仕込んでやるだけでHTTPの口が空いて、そこ経由でいろいろできる。レスポンスはJSONで帰ってくる。 Cassandraの記事はまた次回www まぁ、今回もJolokiaに手を出したのもCassandra起因なんだけどね。Cassandraはレイテンシやリード/ライト数がMBeanに格納されてて、そいつを抜いてグラフ描画させたいなぁ、と。Cassandraのマネジメントツールとしては、
Finagle is an extensible RPC system for the JVM, used to construct high-concurrency servers. Finagle implements uniform client and server APIs for several protocols, and is designed for high performance and concurrency. Most of Finagle’s code is protocol agnostic, simplifying the implementation of new protocols. Finagle is written in Scala, but provides both Scala and Java idiomatic APIs. GitHub p
WEB+DB PRESS の Vol.82 に、かなり気合いの入った JVM オプションの記事を書いたので、是非読んで頂きたい。 2014/8/23 発売ですので、既に購入頂いてる方も多いと思います。 電子書籍版もありますので物理的な媒体に興味がない方は PDF を買って下さい。 WEB+DB PRESS Vol.82@Gihyo Digital Publishing今回の記事における対象読者について#今回の記事は、ターゲットとして Java に余り時間をコミットしていないけども便利なので JVM 上で動くアプリケーションをウッカリ運用している人をイメージしながら書きました。 例えば、OSS ものだと Hadoop や ZooKeeper、Lucene や Solr、商用製品だと Stash とか JIRA とか confluence とかそういうものですね。 僕の観測範囲だと、PHP や
10. jmc Java Mission Control ● メモリ統計、スレッド数、クラス数をグラフィカルに表 示 ● jconsoleと似たような感じだけどjmcの方がなうい? ● ダッシュボードのカスタマイズ(グラフの追加)が可能 ● Flight Recorderというプロファイリングツールがあ る。が商用ライセンスが必要(らしい ● -XX:+UnlockCommercialFeatures -XX:+FlightRecorder ● Eclipseプラグインとしても利用できる(らしい
Node.jsがJVMにやってきた - Introduction of Nodyn - 東京Node学園 12時限目 #thg12 @grimrose import groovy.json.* def json = new JsonBuilder() json { 自己紹介 { "@grimrose" { 好きな言語 "Groovy" 好きなIDE "IntelliJ IDEA" コミュニティ "Yokohama.groovy", "#yokohamagroovy" } } } println StringEscapeUtils.unescapeJava(json.toPrettyString())groovyconsole.appspot.com 東京Node学園祭2013 東京Node学園祭2013 に参加してきました #nodefest Nodyn.io使ってたりJXCore試してみ
先日のJVM Operations Casual Talks、GCやメモリ管理についてまとまった発表や、モニタリングの手法などの話が聞けてよい会でした。 微妙に意識が高まっているところで、メモリ使用量やGCの統計情報を取得して、GrowthForecastでグラフを作ってくれるスクリプトを書きました。それPla、それFluentd系のやつです https://github.com/kazeburo/jstat2gf この元ネタは JVM Operation Casual Talksでのモリスさんの発表にでてきたグラフです。あれを簡単に作れるツールになります。 某JVMのプロセスに対して実行すると、こんな感じのグラフになります。上から「NEW領域」「OLD領域」「Permament領域」「1秒あたりのFull GCの回数」「1秒あたりのFull GCにかかった時間」となっています。 なんかF
jstatの結果を入力とするfluent-plugin-jstatを作りました。 GitHub - wyukawa/fluent-plugin-jstat fluent-plugin-jstat | RubyGems.org | your community gem host JavaアプリケーションのモニタリングというとJMXが思い浮かぶと思いますが、 JMXはアプリ起動時に-Dcom.sun.management.jmxremoteとか指定しないといけないし、 JMXほど大げさじゃなくてもっとカジュアルにモニタリングしたい時もあると思います。 そんなときにはjstatが使えます。 jstatを使ったモニタリングは下記に詳しいです。ここではjstatの結果をderived経由でGrowthforecastに送っています。 derivedがプラグインアーキテクチャになってGrowthFor
以前の記事でトラブルが起きた後の初動対応を書いてみたが、いざトラブルに遭遇すると、まず再起動してからどうするか考えるケースが多いと感じている。しかし何も情報がないと『情報がない/再現方法が不明』などの理由からそのままお蔵入りになってしまう。今回はトラブルに事前に備えるために、地味だけど大切なJavaVMのオプションをまとめてみる。 GCログの出力とローテーション OutOfMemoryError発生時のヒープダンプ自動出力と出力パス設定 JavaVMクラッシュログの出力パス設定 JVMオプションの設定 (OpenJDK/OracleJDK) JavaVMにはGCおよびヒープメモリの状態をロギングする仕組みや、OufOfMemoryError時にヒープダンプを自動的に出力するような障害に備えて自動的に情報を出力する機能がある。おすすめのオプション*1は以下の通り。 java -Xms?g -
VisualVM は、Java 仮想マシン (JVM) で実行中の Java アプリケーションに関する詳細情報を提供します。VisualVM のグラフィカルユーザーインタフェースを使用すると、複数の Java アプリケーションに関する情報をすばやく簡単に表示できます。 この入門ガイドは、VisualVM をすばやく設定して実行するための支援を行います。このガイドでは、VisualVM をインストールする方法と、VisualVM のアップデートセンターからプラグインをインストールして、ツールに機能を追加する方法を説明します。また、VisualVM の起動方法と、ローカルおよびリモートの JVM で実行中のアプリケーションに関して取得できるいくつかの情報の表示方法を示します。 実行中の VisualVM java.sun.com で紹介された短いスクリーンキャストで、VisualVM の機能を
It is fast, simple, polyglot and has unique features. It's JMX on Capsaicin. Jolokia is a JMX-HTTP bridge giving an alternative to JSR-160 connectors. It is an agent based approach with support for many platforms. In addition to basic JMX operations it enhances JMX remoting with unique features like bulk requests and fine grained security policies. Overview of features which make Jolokia unique fo
4/7に、LINEさんのオフィスで開催された「JVM Operation Casual Talks」。 一部で、Cassandra Casualだったのではないかという疑惑もありましたが、なかなかためになる話が多くて、あとできっと資料を見たくなる日が来そうなので、ちょっとまとめておこうと思う。 こちらもあわせて読みたい JVM Operation Casual Talks #jvmcasual - Togetter Understanding Memory Management of JavaVM in 15 minutes (@stanakaさん) https://speakerdeck.com/stanaka/understanding-memory-management-of-javavm-in-15-minutes @stanakaさん、どこでJVM使ってるのかと思ったら、今日は
以下の環境とテストでCMSとG1GCを比較してみた。かなり急ぎでやったので間違っている可能性が多少ある。 16 cores, 32GB mem -Xms24g -Xmx24g 8 instances Infinispan 6.0.3.Final DIST cache, put 4GB data (1KB entry * 2M, 2GB data with one backup copy, 2GB * 2 = 4GB) CMS: -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=30 G1GC: -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:InitiatingHeapOccupancyPercent=30 $ java -XX:+UseG1GC -XX:+PrintFlagsFinal
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く