開発者は Java 言語でソースコードを書き、そのソースコードは Javac というコンパイラでバイトコードに変換されクラスファイルとなり、クラスファイルは Jar ファイルとしてまとめられ、 Java コマンドでアプリケーションとして実行します。 アプリケーショ…
結論 C/C++ 側で Java のjdk.jfr.internal.EventWriterが作成されます。このインスタンスにはThreadLocalに作られたJava用のバッファへのポインタを保持しています。イベントが書込まれるとEventWriterはそのイベントをこのバッファへ書込みます。この書き込…
結論 VM起動引数として指定された-XX:StartFlightRecording=xxx=xxx,yyy=yyyという形式のパラメータは、VMを起動する途中で、JFRのパラメータを初期化するメソッド(JfrOptionSet::initialize)でjcmd の方法に変換されます。その後、VMはJFRのパラメータを設…
結論 ローカルに作られるリポジトリからイベントを読み込みます。イベントは非同期でこのファイルに書込まれます。そのため、本当の意味でのリアルタイムにはイベントは処理されないため気を付けましょう。 JFR Event Streamingとは Java 14 で追加された JF…
Java 14 から JDK Flight Recorder で取得した情報を Java プロセス内で処理する JFR Event Streaming が導入されました。今回はこれを Quarkus で使ってみたいと思います。 今回のサンプルでは JFR では標準的な情報を取得するようにします。JFR Event Stre…
環境 SpringBoot 2.3.0 Infinispan 10.1.7 サンプルソースはこちら GitHub - chiroito/spring-session-sample 手順 Java EE がインフラの設定だけで実現できることと比べ、SpringBoot はアプリ側を少し書き換えて設定しないと行けません。 手順は以下のとお…
これまでは、リモートストアを使用して HTTP セッションを Infinispan やその商用製品である Red Hat Data Grid へオフロードしていました。ですがその方法は Wildfly 14 (JBoss EAP 7.2)から古くなったようです。新しい方法は同バージョンから導入されたely…
OpenShift のクラスタモニタリングスタックの設定を変更するには、クラスタモニタリングの ConfigMap を変更する必要があります。この ConfigMap が存在しない場合は、参考の URL にあるマニュアルにある通り作成します。 設定をする前にまずはクラスタモニ…
Infraノードを足しても OpenShift のインフラである Router が Infra ノードに移らなかったので、移るようにするメモです。 ノードは以下の様になっています。 $ oc get nodes -n openshift-machine-api NAME STATUS ROLES AGE VERSION ip-10-0-129-22.us-ea…
プロジェクト(名前空間)を作る時に最初からいろいろな制限など決まり切った内容を毎回行う場合があると思います。そのような作業を減らすため、テンプレートを使って最初から反映したプロジェクトを作れるようにしてみます。 テンプレートの変更 まずはテ…
最初にユーザを作る時はパスワードファイル(passwordfile)も同時に作成します。 $ htpasswd -c -B -b passwordfile user1 MyPassword! 2人目移行のユーザを作る時はパスワードファイルの作成は不要なので、-cオプションを外します。 $ htpasswd -B -b passwo…
コンテナイメージレジストリやルータなどインフラを構成する要素のみをホストするようなマシンをインフラノードと言います。今回はこの様なノードを AWS 上で構築した OpenShift 4.3 に追加します。 インフラノードとワーカーノードの違いは以下の要素を含ん…
AWS も OpenShift も超初心者なので OpenShift を壊してしまったため IPI で再構築しようとopenshift-install destroy clusterで削除してたら止まってしまった。 openshift-install --log-level debug destroy clusterで再実行したら以下の様なログが出た。…
ケーブルが長く弛んでいるととても見栄えが悪いし邪魔なので普段から付属のケーブルを破棄して良い感じのケーブルを買うようにしています。毎回自分の購入履歴から探して買うのですが、せっかくなので公開してみました。 ケーブルを整理するためには、基本的…
Infinispanを使う時はDownload - Infinispanのようなダウンロードサイトで必要なファイルをダウンロードして使います。しかし、開発しているGithub上の最新バージョンを使って動かしたい時もあるでしょう。そんな時はビルドした後に出来上がる成果物を使いま…
これまで通算11個のパッチを書いたので、推薦してもらい、OpenJDKコミュニティ内での信任投票の結果 OpenJDK の Committer になりました。 ※推薦してもらった時点では12個でしたが、その間に1個ダメになったので11個でした。 他のOSSだと1個パッチを書くだけ…
キャッシュからデータを取得する時に、キャッシュにデータが乗っていないためキャッシュミスが発生し、RDBMSやオブジェクトストレージなどのデータストアからデータを取得し、次に備えてキャッシュに載せると言うことがあります。また、キャッシュの更新や他…
インメモリデータグリッドを使用するにあたり分散キャッシュを使って自作のデータ型となるエンティティを使うことは避けられないでしょう。今回はHot Rodを使ったDistributed-cacheでどうやって自作のエンティティを使うかを紹介します。 オブジェクトを読み…
Infinispanを触ってて、設定ファイルで設定した内容に加え、コードによる設定を足したいなと思うことがあったので書いてみました。 以下の通りにするとHot Rodの設定ファイルであるresources/hotrod-client.propertiesを読み込みつつ、コードによる設定もで…
Infinispan をクライアントサーバモードで動かした時の、実行回数をスレッド数を変えて性能測定してみました。 環境 クライアントとサーバのマシンを1台ずつ用意しています。サーバマシンにはInfinispanを2プロセス起動しています。 使用したInfinispanは10.…
今回は、Infinispan をクライアントサーバモードでキャッシュを使用してみます。 デフォルト設定で作成してあるmycacheという名前のキャッシュを使用します。サンプルコードではまず、このキャッシュを取得します。最後にそのキャッシュにあるデータの件数や…
Infinispan をライブラリモードで動かした時の、実行回数をスレッド数を変えて性能測定してみました。 環境 Lenovo X1 Xtremeで、4コアのI5-9400H を搭載しています。 ベンチマーク 今回試した処理は get と put です。 以下が実行回数のグラフで、get は左…
今回は、Infinispan をライブラリモードでキャッシュを使用してみます。 デフォルト設定でキャッシュを作成し、そのキャッシュにmycacheという名前を付けます。そして、mycacheというキャッシュを取得します。最後にそのキャッシュにあるデータの件数やデー…
ここでは Infinispan を開発するにあたって必要となるテストの実行の仕方を紹介します。 環境構築についてはこちら(Windows 上に Infinispan 11 のビルド環境を構築してみた - #chiroito ’s blog)をご覧ください。 全体のテスト Infinispan のテストを全部…
ここでは Windows 上でInfinispan を開発するためビルドできるように環境を構築していきます。Windows固有の理由でテストが通らなかったりするので、テストはスキップします。 環境変数 Java 11 と Maven が必要になりますので適宜インストールしてください…
環境 以下の環境で試しました。 macOS Mojave バージョン 10.14.6 Xcode Version 11.3.1 (11C504) 環境の準備 環境を準備するには以下の3つが必要です。 Xcode autoconf Boot用JDK Xcode は App Store からインストールしました。 デフォルトの設定ではbash …
Infinispan を使った環境を構築する場合、ライブラリモード(Embedded)方式とクライアントサーバ方式の2通りの方法があります。今回はmycache というキャッシュを持つ環境の作り方をそれぞれ簡単に紹介します。 今回試したバージョンは Infinispan 10.1.3.F…
2月頭に著者のきしださんとスウェーデンへ行った時に、毎日進捗を確認したおかげか、著者から献本をいただきました。 献本いただきました~。前書きから涙なしでは読めない!!#minjava pic.twitter.com/NKIYx38ofN— いとうちひろ(Chihiro Ito) (@chiroito) …
システムを運用する時や検証する時にオシャレなGUIで状況を確認したいことはないでしょうか。Infinispan 10にはこの様な要求を実現する機能が含まれています。今回はその機能を使って Grafana でオシャレなダッシュボードを作れるようにするところまで紹介し…
ここでは、Infinispan 10 のログレベルを変更する方法を紹介します。通常の動かし方と公式コンテナを使った場合の2通りを紹介します。 プロセスを起動する場合 以下の流れでログレベルを変更します。 ログファイルを編集 infinispan Server を起動 設定ファ…