Quarkusのテンプレートエンジン "qute"

この記事は赤帽エンジニア Advent Calendar 2019の12/11分の記事です。今日は日本JBossユーザグループでQuarkus入門について話しましたが、スライドはこちらです。今日の記事では、スライドに入りきらなかった qute について紹介します。 背景 今年の4月にGl…

Galleonを使ってWildFlyのイメージサイズを小さくする

GalleonはWildFly16から対応した、WildFlyのバイナリを作るためのプロビジョニングツールです。詳細についてはWildFly News - WildFly 16 and Galleon, towards a cloud native EE application serverにまとめられていますが、Galleonにより以下が実現できま…

RESTEasy BeanValidationエラーメッセージのカスタマイズ

JAX-RS Specでは、BeanValidationのバリデーションエラー時には、エラー原因を返すことのみが規定されており、メッセージのフォーマット自体は実装依存です。 7.6 Validation and Error Reporting In all cases, JAX-RS implementations SHOULD include a re…

Quarkusのスレッドプール設定

Quarkusで実行されるブロッキングタスク(JAX-RS/Servletなど)は、従来のAPサーバと同様にランタイム内部で管理されるスレッドプールにより実行されます。WildFly/JBoss EAPでtask-max-threadsに相当するパラメータは、ソースコード中のapplication.propertie…

Quarkus入門

GlassFish Users Group Japan 勉強会 2019 SpringでQuarkusについて紹介しました。話そうと思っていたけれどもスライドに入らなかったことをブログで補足してみます。 Quarkusとは何か とにかく起動が高速な Java EE / MicroProfile ベースのAPIでコードが書…

OpenShiftでJBossクラスタを構成する仕組み

この記事は赤帽エンジニア Advent Calendar 2018の12/4分の記事です。 Red HatでJBoss EAPのサポートエンジニアをしています。自由なAdvent Calendarなので、自由に勉強メモを書いてみます。JBossのようなAPサーバはクラスタメンバの探索に従来マルチキャス…

OpenShift Origin 3.9のインストール

OpenShift Origin 3.9のセットアップ手順メモ。前提条件は以下の通り。 OpenShift用DNSサーバ(dnsmasq)、OpenShift Master 1台、 Node 1台 Route経由でOpenShift SDNネットワーク外からアクセスするために、ワイルドカードDNSが必要であり、OpenShiftの利用…

minikube startのプロキシ越え

k8s

プロキシ環境化でminikubeのセットアップにはまったのでメモ。 詳細は https://github.com/kubernetes/minikube/issues/530 を参照。環境 CentOS Linux release 7.4.1708 Docker 1.13.1 VirtualBox 5.2.10 minikube v0.26.1 プロキシ環境化でのminikube star…

Elasticsearchのインデックス開きすぎによるヒープメモリ枯渇

この記事はElastic stack Advent Calendar 2017の12/6分の記事です。ElasticスタックによるApacheアクセスログやsar情報などのメトリクス収集を初めて導入した後の頻出トラブルとして、インデックスのオープンしすぎによるJavaヒープメモリ枯渇がある。検索…

ElasticsearchのBulk API効果を実測する

Elasticsearchには、クライアントから複数のリクエストをまとめて送信するBulk API機能がある。JDBCのexecuteBatchのようなイメージで使える。JDBCの場合、Oracleのドキュメントでは、バッチ単位のガイドライン*1として「バッチ・サイズを50から100の一般的…

Kafkaコンシューマのリバランスはいつ行われるか

Kafkaのコンシューマグループに、コンシューマを追加すると、各コンシューマがどのパーティションを読み取るか再割り当てするリバランスが行われる。Kafka0.11.0.1を対象に、以下の観点でKafkaの実装を調べてみた結果をまとめる。 リバランスはいつ行われる…

Kafkaコンシューマのrecords-lagは何の値か

Kafkaコンシューマの監視した方が良いメトリクスとして、datadog*1のドキュメントや、HortonworkによるKafkaのベストプラクティス*2ではrecords-lagが紹介されている。このコンシューマのlagとは具体的にどのように計算された値か、以降にまとめる。以下の内…

tcpdumpからKafkaのリトライ可能エラーを追う

Kafkaのメッセージロストの原因の1つに、プロデューサの設定のretries(デフォルト0:リトライしない)の未設定がある。 Kafkaクライアントの送信リトライ プロデューサからメッセージ送信時のエラーには、retires設定によりKafkaのクライアントライブラリ内で…

Elastic {ON} 2017 3/7 ノート(1日目)

今日からElastic {ON}が始まった。会場はサンフランシスコのPier48という、AT&Tパーク近くの倉庫のようなイベント会場。キーノートを行う一番大きなセッション部屋はそれなりに大きい。 キーノート 日本のElastic {ON} Tourでもお見かけしたことのある、CTO…

PayaraのJMX Monitoring Service

この記事は Payara Advent Calendar 2016の12/23分の記事です。 昨日はsuke_masaさんのPayaraのバグを報告してみようでした。 明日は@yumix_hさんです。2016/8/1にリリースされた Payara Server 4.1.1.163 より、指定したJMX MBeanの値を定期的にロギングで…

Commons Lang 3.5 でJava EEにBreakerを組み込む

この記事は Java EE Advent Calendar 2016の12/13分の記事です。 昨日はsuke_masaさんの必要最小限のサンプルでThymeleafを完全マスターでした。 明日は@kazuhira_rさんです。Payara MicroやWildFly Swarmをベースとしたマイクロサービス対応の共通仕様の規…

コネクションプールの挙動差分によるバグ顕在化

この記事は Java EE Advent Calendar 2016の12/2分の記事です。 明日は@opengl_8080さんです。Java EEが使われているシステムは、改修を加え続けながら数年〜十年と運用し続けるライフサイクルの長いシステムが多くあります。アプリケーションを全面刷新する…

LogstashからIngest Nodeへの移行

ELK

Elasticsearch 5.xからはIngest Nodeを使うと、Logstashを使わなくてもElasticsearchでログの変換ができるとElastic社のスライドにまとまっていたので、LogstashからIngest Nodeへの移行についてメモ。 LogstashからIngest Nodeへの移行 今までFilebeatで集…

EmbulkでアクセスログをLogstash風に取り込む

ELK

トラブルシューティング時に、バッチ取り込みによるKibanaアクセスログ可視化を行う場合、ログの取り込みに掛かる時間は短い程嬉しい。もちろん測定条件やチューニングにも依存すると思うが、手元のマシン*1においては、Logstash2.2を使うより、Embulk v0.8.…

Kibana4.4.0の機能追加

ELK

2016/02/02にリリースされたkibana4.4.0に欲しかった機能が入っていたのでメモ。 詳細は公式のリリースノート Kibana 4.4 Release Notes を参照。4.1から起動スクリプトを含むRPMファイルもリリースされている。公式のダウンロード リンクにはなく、yum経由…

CentOS7でOpenJDKのソースツリー取得時に/dev/stdout: Permission denied

手元の環境を再構築したときにハマったのでメモ。 get_source.shでエラー CentOS7でOpenJDK9のソースコードを取得しようとすると、以下のようなエラーが発生してget_source.shでソースコードがhg cloneできない。 hg clone http://hg.openjdk.java.net/jdk9/…

JDK8(Linux 64bit)のデフォルトヒープサイズ

Oracleの公式ドキュメントには、-Xmxが未指定であった場合のエルゴノミクスによる最大ヒープサイズは『32GBを上限として、物理メモリの4分の1』書かれている。32GBは-XX:-UseCompressedOopsにより圧縮Oopを明示的に無効にした場合の最大デフォルトヒープサイ…

Javaバッチ処理のNFS向けファイルI/O

この記事は Java EE Advent Calendar 2015の12/7分の記事です。 明日は@btnrougeさんです。Java EEのAPIが直接関連する話ではなくて恐縮ですが、サーバサイドJavaでファイルI/Oを含むバッチ処理の性能Tipsをまとめます。テーマはjava.io.BufferedWriterクラ…

JavaOne 2015 4日目メモ (10/28)

JavaOne 4日目の夜には、毎年トレジャーアイランドでOracle Appreciation Event(オラクルによる感謝祭?)が行われ、有名な方のライブが行われる。今年はエルトンジョンとBECKだった。毎年寒いので、薄手のダウンなど暖かい服装が必須。4日目は以下のセッショ…

JavaOne 2015 3日目メモ (10/27)

3日目も晴れている。今年は週間天気予報に雨マークが出てたから折りたたみ傘を持ってたが、4回目で今のところ傘が必要なほどの雨に振られたことがない。今日は以下のセッションに参加。 [CON6712] Enhanced Process APIs [CON11284] JDK 9 Language and Tool…

JavaOne 2015 2日目メモ (10/26)

今日から各種テクニカルセッションの開始。jigsawのセッションにいくつか参加。 [TUT4416] Preventing Errors Before They Happen [CON2554] Java EE 8 Work in Progress [CON5118] Introduction to Modular Development [CON6821] Advanced Modular Develop…

JavaOne 2015 1日目メモ (10/25)

昨年よりも約1ヶ月遅いJavaOneが始まった。初日はコミュニティ主体のセッションであるユーザグループフォーラムと、キーノートがサンフランシスコのモスコーンセンタにて行われた。以下、参加メモ。 [UGF11082] WebSocket Perspectives [UGF11073] Who Wants…

WeldのProxyクラスはどこからやってくるか

CDIの参照実装 Weld では @Dependent を除いて、全てのCDI管理Beanは直接インスタンスがインジェクションされずに、以下のようにプロキシが設定*1される。 test.Message$Proxy$_$$_WeldClientProxy例外発生時のスタックトレースや、スレッドダンプでも見かけ…

JSF (mojarra) ステートレスビューを試してみる

JSF2.2のビッグチケットとして盛り込まれたステートレスビューですが、HttpSessionへのアクセス量を減らせるメリットの一方、制約事項もあります。Wildfly-9.0.0.CR2(mojarra-2.2.11)で色々と試してみたので以下にまとめます。 ステートレスビューの使い方 <f:view transient="true"></f:view>…

JSF (mojarra2.x) のデバッグログ出力

多くのアプリケーションのログカテゴリには、ログを出力しているパッケージ名(jp.co.test... など)が使われていますが、JSFの参照実装であるmojarra2.xでは少し異なる付与規則となっているため、以下にまとめます。 mojarraのログカテゴリ定義 mojarraのログ…