タグ

ブックマーク / nekop.hatenablog.com (11)

  • WildFlyのJMXへスクリプトからアクセスする - nekop's blog

    監視などの目的でGUIなJConsoleではなく、スクリプトからJMXへアクセスしたいことがあります。JBoss AS 6まではtwiddleというコマンドベースのJMXクライアントが付属しましたがAS7やWildFlyには付属していません。さてどうするか、ということでいくつか手段があります。 Jolokia JolokiaはJMX over HTTPを提供するツールです。RESTでJMXアクセスできます。WildFlyではwar版を利用するのが一番簡単でしょう。 $ curl http://localhost:8080/jolokia-war-1.2.0/exec/java.lang:type=Memory/gc {"timestamp":1397463592,"status":200,"request":{"operation":"gc","mbean":"java.lang:type

    WildFlyのJMXへスクリプトからアクセスする - nekop's blog
  • JDBC XAデータソース - nekop's blog

    JBoss Advent Calendar 2011の14日目のエントリです。今日はJDBC XAデータソースの説明。 XAってなによ? ツーフェーズコミット(2相コミット, 2PC)するためのインタフェースです。 XAとか2PCってどんなときに使うの? 一つのトランザクションで2つ以上のトランザクショナルリソース(JDBC JCAリソースアダプタ=データベースとか、JMS JCAリソースアダプタとか)を扱う場合に利用します。 XAとか2PCってなんで必要なの? 例えばデータベースが二つ、DB-AとDB-Bがあって、DB-AからDB-Bにデータを移す処理をするとします。このとき、DB-AからSELECTして削除してDB-Bにインサートする、というようなことをするわけですが、この処理が途中で落ちたら即データ消滅、データ重複などのデータ不整合という結果になってしまいます。XAを使うとこういった

    JDBC XAデータソース - nekop's blog
  • G1GCのつかいどころメモ - nekop's blog

    以下の環境とテストで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

    G1GCのつかいどころメモ - nekop's blog
  • Java 7 CMS GCの基本的な情報の整理 - nekop's blog

    バッチ処理などスループット重視のアプリケーションはデフォルトのパラレルGCで良いが、Java EEアプリケーションサーバなどレスポンスタイム重視のものやHadoopなどのクラスタ系ソフトウェアで死活監視に引っ掛る系などのstop the worldをなるべく避けたいいわゆるサーバ系ソフトウェアを運用する場合には、UseConcMarkSweepGCを付与して停止時間の短いCMS GCを使う。その場合にCMSのチューニングに踏み込もうとするとなんだか難しい記述がいっぱいで若干困るので、簡単なガイドをメモとして書いておく。 対象バージョンは以下。 $ java -version java version "1.7.0_51" OpenJDK Runtime Environment (fedora-2.4.5.1.fc20-x86_64 u51-b31) OpenJDK 64-Bit Serve

    Java 7 CMS GCの基本的な情報の整理 - nekop's blog
  • Wildscribe - nekop's blog

    JBoss / WildFly (全部俺) Advent Calendar 2013の23日目です。 WildscribeはWildFly, JBoss EAP 6.x, JBoss AS7の管理モデルのリファレンスサイトです。ランタイムを立ち上げずに設定項目を調べたりすることができます。 ランタイムでは以下の管理CLIコマンドで全部見られますが出力がJSONなので人間が読むにはちょっとつらい見た目です。 :read-resource-description(recursive=true)Wildscribeのサイト上でホストされているリファレンスの元となっているプロファイルはstandalone-full.xmlのものなので、クラスタ関連のものは網羅されていません。もしhaプロファイルの設定も調べたいという場合はランタイムをみてください。

    Wildscribe - nekop's blog
  • JavaのCPUプロファイリング - nekop's blog

    JBoss / WildFly (全部俺) Advent Calendar 2013の19日目です。Java一般なトピック寄りで。 自分で主に利用するJavaのプロファイラはYourKitなのですが、YourKitを購入していない場合で性能問題を解析するときとかに何が使えるかなぁと思って調べてみました。 $ uname -a Linux localhost.localdomain 3.11.10-301.fc20.x86_64 #1 SMP Thu Dec 5 14:01:17 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux $ java -version java version "1.7.0_45" OpenJDK Runtime Environment (fedora-2.4.3.0.fc20-x86_64 u45-b15) OpenJDK 64-Bi

    JavaのCPUプロファイリング - nekop's blog
  • JBoss EAP 6.2のリモートEJB呼び出し - nekop's blog

    JBoss / WildFly (全部俺) Advent Calendar 2013の9日目です。 まず最初に注意です。リモートEJB呼び出しとか基的には過去の遺産なので、できる限りサービスの呼び出しはRESTにしましょう。ポータブルでシンプルなAPIのほうが良い。 さて、JBoss EAP 6のリモートEJBの呼び出し方法がEAP 5までとは異なるので、ちょっと遊んでみます。JBoss EAP 6.2.0を使います。 JBoss EAP 5まではJNDIからルックアップして呼び出すだけだったのですが、このモデルではEJB呼び出しのリソース境界となるAPIがありません。そのため、EJBクライアントがソケットやスレッドをプールできない、プールしたとしてもいつクローズしていいか分からないという暗黙のプール実装を行うしかないというオチになっていました。EJBクライアント側でEJBの呼び出しコン

    JBoss EAP 6.2のリモートEJB呼び出し - nekop's blog
  • JRubyでHotRodクライアントを書く - nekop's blog

    JBoss / WildFly (全部俺) Advent Calendar 2013の8日目です。 Infinispan Serverのテストをするときに、まず1万エントリ突っ込む、というようなことをよくやります。他にも並列アクセスだとかいろいろなシナリオを実行したいのですが、このようなやたら頻繁に書き直すようなトライアンドエラー系の仕事Javaでやるというのは罰ゲームっぽいのでスクリプトでやりたい。Infinispan Serverにはispn-cli.shという簡易CLIが付属してはいるのですが、もう少し柔軟性が欲しいところです。 というわけでJRubyでjruby-hotrod.rbというのを書きました。 バルクオペレーションのテスト前提なのでキー末尾にはカウントがくっつく仕様です。一旦こんなスクリプト書いてしまえばあとは煮るなり焼くなりマルチスレッドから負荷かけるようにするなりあ

    JRubyでHotRodクライアントを書く - nekop's blog
  • Infinispan Server - nekop's blog

    JBoss / WildFly (全部俺) Advent Calendar 2013の7日目です。 分散インメモリキーバリューストアのInfinispanですが、Infinispan Serverというものもダウンロードできます。通常のInfinispanは単なるJavaのライブラリですが、こちらはこれは起動シェルなどが付属するキャッシュサーバで、memcachedと同じような位置付けのものです。JBoss AS7がベースになっています。 起動シェルは2種類、standalone.shとclustered.shがあり、前者が非分散キャッシュサーバ、後者が分散キャッシュサーバとして動作するようになっています。前者の設定ファイルのデフォルトがstandalone.xml、後者がclustered.xmlとなっているだけでシェル自体にはそれ以外の差はありません。 以下の3種のプロトコルをサポート

    Infinispan Server - nekop's blog
  • MavenではじめるJava EE - nekop's blog

    JBoss / WildFly (全部俺) Advent Calendar 2013の2日目です。ひとつJBoss製品のパッチバイナリをビルドしてテストチームに渡す段取りを終えて一息ついたところです。 Java EE Advent Calendar 2013というのもあるのですが今年も埋まったようで、楽しみです。今日はこちらもJBoss特化ではなくJava EE寄りの話題で。 Java EEのコードをMavenでビルドするときには<dependency>を定義するわけですが、記述方法をGoogle検索すると結構バリエーションが出てきたりして困ったりすることがあります。以下の例ではJava EE 6 にしていますが7でも一緒です。 一番シンプルなのはjavax:javaee-apiを使うものです。 <dependency> <groupId>javax</groupId> <artifact

    MavenではじめるJava EE - nekop's blog
  • MavenでWildFlyやInfinispanをビルドする - nekop's blog

    JBoss / WildFly (全部俺) Advent Calendar 2013の3日目です。前にJBoss AS7をビルドするというのを書いたのですが、これをもう少し派生させてみましょう。 お仕事でWildFlyやInfinispanをかなりの頻度でビルドしています。このあたりのプロジェクトはそこそこの規模が大きく、Mavenのマルチプロジェクト構成となっています。Mavenで大きなプロジェクトを効率的にビルドしたりするときに知っておいたほうが良い点がいくつかあります。 まずMavenのオプション設定ですが、~/.bash_profileで以下のように設定しています。スタックサイズ(-Xss)が512kだとInfinispanのビルドでjavacがStackOverflowErrorでコケるので最近1024kに変更しました。メモリも安くなってきてスタックサイズをケチるモチベーションも

    MavenでWildFlyやInfinispanをビルドする - nekop's blog
  • 1