tsalakh ain sus noam Huyah ol guf

勉強会のメモ。その他備忘録。参考にさせて頂いたサイトや資料はリンクさせて頂いていますが不都合があればご連絡ください。

【技術メモ】Undertow超入門

WildflyServletコンテナ、Undertowについて調べる。

Undertow概要

emamotor.blogspot.jp


Undertowアーキ概要

www.slideshare.net

概要

  • Undertowは、WildflyのWeb/Servletコンテナ
  • JBossがスクラッチ開発
  • 抽象的、使いやすさ、カスタマイズ性を重視
  • XNIO(NIOのWrapperFramework)が基盤

NIO(=New IO、java.nio)

  • 入出力処理用ライブラリ
  • java.ioの機能を補足する
  • スケーラビリティが高く高速な入出力処理が目的
  • 主な機能
    • バッファ:プリミティブに特化したコンテナ(java.nio)
    • 非同期入出力:ノンブロッキング入出力処理(java.nio.channels)

特徴

  • 軽量
    • コアjarサイズ1MB、ヒープ4MBで起動可能
  • 組み込みで利用可能
  • ノンブロッキングAPIに対応
  • リスンポート削減

アーキ概要①:XNIO Worker

リスナーとタスクのスレッドプールを管理

  • リスナー=IOスレッド
  • タスク=処理

アーキ概要②:リスナー

リクエスト受付とレスポンス

  • IOスレッドに紐づいて動作
  • タスクスレッドに、処理をディスパッチ
  • タスクのI/O処理は、処理内容によって自動切替

アーキ概要③:ハンドラ

ハンドラ=処理を行う単位

  • 複数のハンドラをチェーンさせることで、全体としての処理を形成
  • Undertowはハンドラの集合といえる(一般的なコンテナとは違う)
  • Wildflyがうまいこと設定するので、利用者はあまり意識しない

設定のポイント

ioサブシステム

Undertowは/subsystem=ioに依存している

  • リスナーがWorkersとBuffer Poolを参照
  • 性能面での実質的なチューニングポイント

Workersの設定項目

  • Task keepalive
    • 同一クライアントとのコネクション維持
    • default:60s
  • IO threads
  • Task max threads
    • タスクスレッドの最大数
    • default:CPU数x16

Buffer Poolの設定項目

  • Buffer size
    • default:16KB
  • Buffer Per Slice
    • 大きなバッファを分割操作する際のバッファの分割数
    • default:20

undertowサブシステム

  • buffer-cache
    • 静的ファイルのキャッシュなど
  • server
    • Undertow全体の設定
    • リスナー、ホストなど
  • servlet-container
  • 組み込みHandler
    • Filter

TomcatではなくJBossを選ぶ○○の理由

EJBを使うとき」では理解していないようにとられる、主に以下。

  • 機能の充実度
  • 複数システムでの統一性
  • 運用管理の容易性

nekop.hatenablog.com

機能

技術的な判断基準は「有効活用できるUseCaseは?」だが、どれも一覧で見せられてすぐに使いどころを判断できるものではないので、普段からある程度素振りが必要

APサーバの種類の統一

  • 複数システムを開発・運用する場合、統一されていないと非常に面倒
  • となると、機能の少ない方には倒せない
  • また、JBossなら必要無いサービスは削除できる

JBoss、という結論

運用管理の容易性

  • Tomcatは、ほぼ何も提供していない
  • JBossなら、JMXアクセスが便利、MBeanも簡単に作れる

TomcatJBossの違い

TomcatとJBossの違い | OpenGroove


JBossTomcatの性能比較をしてみた

http://tech-sketch.jp/2014/10/jbosstomcat.htmltech-sketch.jp