Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Yoshimasa Tanabe
PDF, PPTX
25,891 views
次世代Webコンテナ Undertowについて
2014-06-25(水) JJUGナイトセミナー「WildFly 8ローンチ記念」の発表資料です。
Software
◦
Read more
45
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 72
2
/ 72
3
/ 72
4
/ 72
5
/ 72
6
/ 72
7
/ 72
Most read
8
/ 72
9
/ 72
10
/ 72
Most read
11
/ 72
Most read
12
/ 72
13
/ 72
14
/ 72
15
/ 72
16
/ 72
17
/ 72
18
/ 72
19
/ 72
20
/ 72
21
/ 72
22
/ 72
23
/ 72
24
/ 72
25
/ 72
26
/ 72
27
/ 72
28
/ 72
29
/ 72
30
/ 72
31
/ 72
32
/ 72
33
/ 72
34
/ 72
35
/ 72
36
/ 72
37
/ 72
38
/ 72
39
/ 72
40
/ 72
41
/ 72
42
/ 72
43
/ 72
44
/ 72
45
/ 72
46
/ 72
47
/ 72
48
/ 72
49
/ 72
50
/ 72
51
/ 72
52
/ 72
53
/ 72
54
/ 72
55
/ 72
56
/ 72
57
/ 72
58
/ 72
59
/ 72
60
/ 72
61
/ 72
62
/ 72
63
/ 72
64
/ 72
65
/ 72
66
/ 72
67
/ 72
68
/ 72
69
/ 72
70
/ 72
71
/ 72
72
/ 72
More Related Content
PDF
HTTP/2 入門
by
Yahoo!デベロッパーネットワーク
PPTX
Metaspace
by
Yasumasa Suenaga
PDF
JVMのGCアルゴリズムとチューニング
by
佑哉 廣岡
PDF
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
by
Yahoo!デベロッパーネットワーク
PDF
eBPFを用いたトレーシングについて
by
さくらインターネット株式会社
PDF
HashiCorpのNomadを使ったコンテナのスケジューリング手法
by
Masahito Zembutsu
PDF
ストリーム処理を支えるキューイングシステムの選び方
by
Yoshiyasu SAEKI
PDF
Javaトラブルに備えよう #jjug_ccc #ccc_h2
by
Norito Agetsuma
HTTP/2 入門
by
Yahoo!デベロッパーネットワーク
Metaspace
by
Yasumasa Suenaga
JVMのGCアルゴリズムとチューニング
by
佑哉 廣岡
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
by
Yahoo!デベロッパーネットワーク
eBPFを用いたトレーシングについて
by
さくらインターネット株式会社
HashiCorpのNomadを使ったコンテナのスケジューリング手法
by
Masahito Zembutsu
ストリーム処理を支えるキューイングシステムの選び方
by
Yoshiyasu SAEKI
Javaトラブルに備えよう #jjug_ccc #ccc_h2
by
Norito Agetsuma
What's hot
PDF
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
by
Masahito Zembutsu
PPTX
Dockerからcontainerdへの移行
by
Akihiro Suda
PDF
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
by
NTT DATA Technology & Innovation
PDF
DockerとPodmanの比較
by
Akihiro Suda
PPTX
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
by
toshi_pp
PDF
Oracle GoldenGate アーキテクチャと基本機能
by
オラクルエンジニア通信
PDF
ゼロからはじめるKVM超入門
by
VirtualTech Japan Inc.
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
by
Kohei Tokunaga
PDF
今だからこそ知りたい Docker Compose/Swarm 入門
by
Masahito Zembutsu
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
by
NTT DATA Technology & Innovation
PDF
マルチコアとネットワークスタックの高速化技法
by
Takuya ASADA
PDF
Docker Compose 徹底解説
by
Masahito Zembutsu
PDF
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
by
NTT DATA Technology & Innovation
PDF
ネットワークエンジニアはどこでウデマエをみがくのか?
by
Yuya Rin
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
PDF
超実践 Cloud Spanner 設計講座
by
Samir Hammoudi
PDF
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
by
NTT DATA Technology & Innovation
PDF
TiDBのトランザクション
by
Akio Mitobe
PDF
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
by
モノビット エンジン
PDF
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
by
Yahoo!デベロッパーネットワーク
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
by
Masahito Zembutsu
Dockerからcontainerdへの移行
by
Akihiro Suda
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
by
NTT DATA Technology & Innovation
DockerとPodmanの比較
by
Akihiro Suda
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
by
toshi_pp
Oracle GoldenGate アーキテクチャと基本機能
by
オラクルエンジニア通信
ゼロからはじめるKVM超入門
by
VirtualTech Japan Inc.
コンテナ未経験新人が学ぶコンテナ技術入門
by
Kohei Tokunaga
今だからこそ知りたい Docker Compose/Swarm 入門
by
Masahito Zembutsu
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
by
NTT DATA Technology & Innovation
マルチコアとネットワークスタックの高速化技法
by
Takuya ASADA
Docker Compose 徹底解説
by
Masahito Zembutsu
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
by
NTT DATA Technology & Innovation
ネットワークエンジニアはどこでウデマエをみがくのか?
by
Yuya Rin
マイクロサービス 4つの分割アプローチ
by
増田 亨
超実践 Cloud Spanner 設計講座
by
Samir Hammoudi
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
by
NTT DATA Technology & Innovation
TiDBのトランザクション
by
Akio Mitobe
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
by
モノビット エンジン
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
by
Yahoo!デベロッパーネットワーク
Similar to 次世代Webコンテナ Undertowについて
PDF
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
by
Naoya Hashimoto
PDF
すごく分かるwarden
by
i_yudai
PDF
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
by
akira6592
PDF
RedHat MW 2015
by
omatsuha
PDF
バージョンアップに負けないためのプラクティス
by
Yuji Tokuda
PDF
はじめての CircleCI
by
Yosuke Mizutani
PDF
PaaSの作り方 Sqaleの場合
by
hiboma
PDF
Gitと出会って人生変わった テックヒルズ2013-03-22
by
Shota Umeda
PDF
めんどうくさくないWardenハンズオン
by
i_yudai
KEY
Real world rails
by
Jun Yokoyama
PPTX
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
by
gree_tech
PDF
クラウド開発に役立つ OSS あれこれ
by
Masataka MIZUNO
PDF
Cloud Foundry: Open Platform as a Service
by
Shunsuke Kurumatani
PPTX
Wasm blazor and wasi 2
by
Takao Tetsuro
PPTX
Myfirst cloudfoundry intro_20161201
by
Tomohiro Ichimura
PDF
GitLab Auto DevOps with Container CI/CD
by
Shingo Kitayama
KEY
Alfresco CI
by
Ashitaba YOSHIOKA
PDF
Bitbucket Pipelinesについて
by
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
PDF
about dodai project in OSC 2012.Cloud
by
Osamu Habuka
PDF
JAWS-UG Meets Windows (JAWS Days 2017)
by
Amazon Web Services Japan
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
by
Naoya Hashimoto
すごく分かるwarden
by
i_yudai
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
by
akira6592
RedHat MW 2015
by
omatsuha
バージョンアップに負けないためのプラクティス
by
Yuji Tokuda
はじめての CircleCI
by
Yosuke Mizutani
PaaSの作り方 Sqaleの場合
by
hiboma
Gitと出会って人生変わった テックヒルズ2013-03-22
by
Shota Umeda
めんどうくさくないWardenハンズオン
by
i_yudai
Real world rails
by
Jun Yokoyama
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
by
gree_tech
クラウド開発に役立つ OSS あれこれ
by
Masataka MIZUNO
Cloud Foundry: Open Platform as a Service
by
Shunsuke Kurumatani
Wasm blazor and wasi 2
by
Takao Tetsuro
Myfirst cloudfoundry intro_20161201
by
Tomohiro Ichimura
GitLab Auto DevOps with Container CI/CD
by
Shingo Kitayama
Alfresco CI
by
Ashitaba YOSHIOKA
Bitbucket Pipelinesについて
by
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
about dodai project in OSC 2012.Cloud
by
Osamu Habuka
JAWS-UG Meets Windows (JAWS Days 2017)
by
Amazon Web Services Japan
More from Yoshimasa Tanabe
PDF
Introduction to Apache ActiveMQ Artemis
by
Yoshimasa Tanabe
PDF
WildFly Swarm - Rightsize Your Java EE Apps
by
Yoshimasa Tanabe
PDF
WildFly Swarm In Progress
by
Yoshimasa Tanabe
PDF
Introduction to WildFly Swarm #jjug
by
Yoshimasa Tanabe
PDF
Introduction to WildFly Swarm
by
Yoshimasa Tanabe
PDF
Introduction to Drools
by
Yoshimasa Tanabe
PDF
Keycloak で SSO #渋谷java
by
Yoshimasa Tanabe
PDF
OpenShift のある生活
by
Yoshimasa Tanabe
Introduction to Apache ActiveMQ Artemis
by
Yoshimasa Tanabe
WildFly Swarm - Rightsize Your Java EE Apps
by
Yoshimasa Tanabe
WildFly Swarm In Progress
by
Yoshimasa Tanabe
Introduction to WildFly Swarm #jjug
by
Yoshimasa Tanabe
Introduction to WildFly Swarm
by
Yoshimasa Tanabe
Introduction to Drools
by
Yoshimasa Tanabe
Keycloak で SSO #渋谷java
by
Yoshimasa Tanabe
OpenShift のある生活
by
Yoshimasa Tanabe
次世代Webコンテナ Undertowについて
1.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 1 次世代 Web コンテナ Undertow について 田邊 義真(NTT OSSセンタ ) 2014-06-25 JJUG ナイトセミナー「 WildFly 8ローンチ記念」
2.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 2 前提 ● 動作確認環境 – WildFly 8.1.0.Final ● Undertow 1.0.15.Final ● standalone モード – Fedora 20 – OpenJDK 8 ● 記述方法 – CLI 利用箇所は [CLI] と記述します – ターミナルは [Terminal] と記述します ● 検証内容 – 手元環境での簡易な負荷試験を実施
3.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 3 アジェンダ Undertowとは アーキテクチャ概要 設定ポイント Undertowいろいろ
4.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 4 Undertow とは
5.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 5 WildFly の Web/Servlet コンテナ Undertow は WildFly から導入された Web/Servlet コンテナです
6.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 6 Web/Servlet コンテナの歩み ● JBoss Web(AS7以前 ) – http://jbossweb.jboss.org – Tomcat ベース ● パフォーマンス強化 ● クラスタリングは別実装 ● その他いろいろとカスタマイズされている ● Undertow(WildFly から ) – http://undertow.io – スクラッチ ● 初コミットは 2012/07 。当初は Texugo という名称 ● 基盤は XNIO(NIO ラッパフレームワーク ) – http://xnio.jboss.org/
7.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 7 Undertow が生まれた背景 ● なぜ新しい Web サーバが必要なのか – Web の発展と共に Web サーバへ求められる機能が増加している ( これからも増え続ける ) 。 – 様々なユースケースに対応できる、柔軟性の高いサーバが欲しい ● 抽象化、使いやすさとカスタマイズ性を両立するために、 XNIO を採用 した。 XNIO は NIO のラッパーで、冗長さの排除とダイレクト I/O と OS とを統合する API といった低レイヤ I/O 層を提供するが、それ以上 は踏み込まない。また、後方互換性にも優れている。 – Undertow FAQ より ● http://undertow.io/documentation/faq.html – また、全体的にクラウド上での利用を強く意識しているように感 じます
8.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 8 特徴 1. 軽量 ● コア jar のサイズは 1.3MB 程度 ● ヒープサイズ 10MB 以下で起動 – ※ ごくごくシンプルな設定の場合で試行
9.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 9 特徴 2. 組込み可能 ● 従来の Web/Servlet コンテナとは違い、必要 なものを組み合わせて使うというアーキテクチ ャ ( 後述 ) により、アプリケーションに容易に 組み込み可能 – ※ 本資料の主な内容は、 WildFly の 1 サブシステ ムとしての利用を想定しています
10.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 10 特徴 3. Blocking/Non-blocking API ● Undertow はブロッキング / ノンブロッキング API 両方を提供する ● Servlet や WebSocket など、使う API によっ てブロッキングとノンブロッキングのどちらで 処理するか自動的に使い分けられる
11.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 11 特徴 4. HTTP Upgrade Support ● WebSocket 対応とリスンポート削減 – WebSocket(JSR356) 対応に HTTP Upgradeが必要 – EJB や JMS 等、独自プロトコルを利用するものを HTTP Upgrade 経由で接続することで、リスンポートが削減された。 – 1 筐体 /VM インスタンスに複数サーバが実行される PaaS 環境に 有効 $ ss anp | grep <as7pid> tcp LISTEN 127.0.0.1:8080 < http tcp LISTEN 127.0.0.1:4447 < remoting tcp LISTEN 127.0.0.1:5445 < messaging tcp LISTEN 127.0.0.1:9990 < managementhttp tcp LISTEN 127.0.0.1:9999 < managementnative $ ss anp | grep <wildflypid> tcp LISTEN 127.0.0.1:8080 tcp LISTEN 127.0.0.1:9990 ※ 出力内容は抜粋しています
12.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 12 アーキテクチャ概要
13.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 13 Undertow の構成要素 ● XNIO Worker ● リスナ ● ハンドラ
14.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 14 XNIO Worker ● IO スレッド ( リスナ ) とタスク ( 処理 ) のスレ ッドプールを管理
15.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 15 リスナ ● リクエストの受け付け、 HttpServerExchange という リクエスト / レスポンス情報を持つインスタンスへの変 換、クライアントへのレスポンスを担う ● HTTP, HTTPS, AJPが組込まれている – 今後 SPDY もサポートされる予定 ● IO スレッドと紐付いている ● 処理はタスクのスレッドにディスパッチする ● 利用 API によってタスク中の I/O 処理が切り替わる – Servlet: ブロッキング – WebSocket, Async Servlet:ノンブロッキング
16.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 16 ハンドラ ● 処理を行う単位 ● 複数のハンドラを登録し、チェーンさせること で全体としての処理を形成する
17.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 17 ハンドラチェーン 出典 : Entering Undertow Web server http://www.javacodegeeks.com/2014/01/entering-undertow-web-server.html
18.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 18 コード片からイメージをつかむ ● 組込み Undertow のコード例 ( ビルダ API) – “Hello World” を返すだけの http サーバ Undertow server = Undertow.builder() .addHttpListener(8080, "localhost") .setHandler(new HttpHandler() { @Override public void handleRequest(HttpServerExchange ex) throws Exception { ex.getResponseHeaders().put(CONTENT_TYPE, "text/plain"); ex.getResponseSender().send("Hello World"); } }).build(); server.start();
19.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 19 コード片からイメージをつかむ ● 組込み Undertow のコード例 ( ビルダ API) – “Hello World” を返すだけの http サーバ Undertow server = Undertow.builder() .addHttpListener(8080, "localhost") < HTTP リスナのバインディング .setHandler(new HttpHandler() { @Override public void handleRequest(HttpServerExchange ex) throws Exception { ex.getResponseHeaders().put(CONTENT_TYPE, "text/plain"); ex.getResponseSender().send("Hello World"); } }).build(); server.start();
20.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 20 コード片からイメージをつかむ ● 組込み Undertow のコード例 ( ビルダ API) – “Hello World” を返すだけの http サーバ Undertow server = Undertow.builder() .addHttpListener(8080, "localhost") .setHandler(new HttpHandler() { < ハンドラ ( 処理内容 ) @Override public void handleRequest(HttpServerExchange ex) throws Exception { ex.getResponseHeaders().put(CONTENT_TYPE, "text/plain"); ex.getResponseSender().send("Hello World"); } }).build(); server.start();
21.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 21 コード片からイメージをつかむ ● 組込み Undertow のコード例 ( ビルダ API) – “Hello World” を返すだけの http サーバ Undertow server = Undertow.builder() .addHttpListener(8080, "localhost") < HTTP リスナ .setHandler(new HttpHandler() { @Override public void handleRequest(HttpServerExchange ex) throws Exception { ex.getResponseHeaders().put(CONTENT_TYPE, "text/plain"); ex.getResponseSender().send("Hello World"); } }).build(); server.start(); リクエスト / レスポンス情報
22.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 22 コード片からイメージをつかむ ● 組込み Undertow のコード例 ( ビルダ API) – “Hello World” を返すだけの http サーバ Undertow server = Undertow.builder() .addHttpListener(8080, "localhost") .setHandler(new HttpHandler() { @Override public void handleRequest(HttpServerExchange ex) throws Exception { ex.getResponseHeaders().put(CONTENT_TYPE, "text/plain"); ex.getResponseSender().send("Hello World"); } }).build(); server.start(); < ビルド情報をもとにサーバ起動
23.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 23 コード片からイメージをつかむ ● ハンドラチェーンの例 public interface HttpHandler { void handleRequest(HttpServerExchange exchange) throws Exception; } public clss MyHandler implements HttpHandler { private final HttpHandler next; < 次のハンドラ。コンストラクタで設定 @Override public void handleRequest(HttpServerExchange ex) throws Exception { // 何らかの処理 next.handleRequest(ex); < 次のハンドラの処理を実行 } }
24.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 24 ハンドラの集合 ● Undertow はハンドラの集合であり、一般的な コンテナのイメージとは違います ● WildFly の中で Undertow を使う場 合、 Web/Servlet コンテナとして動作するの に必要なハンドラが適切に設定されて起動され るため、普段は意識する必要はありません
25.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 25 設定ポイント
26.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 26 設定ポイント ... の前に
27.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 27 その前に ... 設定方法 ● AS7 からシンプルに – AS6 以前 ● 設定ファイル : 各所に分散 ● 設定方法 : 基本的に xml 直接編集 – AS7 から ● 設定ファイル : 一箇所 (standalone*.xml) に集約 ● 設定方法 : インターフェースが強化されました ● 設定方法あれこれ – CLI – Web コンソール – 設定ファイル (standalone*.xml) 直接編集
28.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 28 設定方法 1. CLI ● 慣れてきたら CLI がおすすめ – 慣れるまで少々練習を要するかも ( 個人の感想 ) ● タブ補完が利く ● スクリプト化して再利用がしやすい [Terminal] $ cd <WILDFLY_HOME>/bin $ ./standalone.sh < WildFly の起動 $ ./jbosscli.sh c < CLI の起動 [CLI] [standalone@localhost:9990 /] < プロンプトが変わる ※ 以降ではプロンプトは省略いたします
29.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 29 設定方法 1. CLI [CLI] ls l / < 管理リソース一覧をルート※から表示 ATTRIBUTE VALUE TYPE [...] releaseversion 8.1.0.Final STRING [...] CHILD MINOCCURS MAXOCCURS coreservice n/a n/a deployment n/a n/a deploymentoverlay n/a n/a extension n/a n/a interface n/a n/a path n/a n/a socketbindinggroup n/a n/a subsystem n/a n/a systemproperty n/a n/a ※ 管理リソースはツリー構造になっています
30.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 30 設定方法 2. Webコンソール ● GUI(Web ブラウザ ) 上の操作のため直感的 – おおまかに何が設定できるのかを確認するときにも おすすめ ● ただし、設定できない項目もある – CLI は全ての項目が設定可能 [Terminal] $ cd <WILDFLY_HOME>/bin $ ./adduser.sh < 管理ユーザ (Management User)を作成しておく $ ./standalone.sh < WildFly の起動 ブラウザで以下 URI にアクセス http://localhost:9990
31.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 31 設定方法 2. Webコンソール
32.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 32 設定方法 3. standalone*.xml 直接編集 ● 非推奨 ● タイポやコピペミスによる設定不備が起きがち ● 何をしたか記録に残らない – CLI, Webコンソールで行った設定は以下に記録 ● <WILDFLY_HOME>/standalone/configuration/standalone_xml_history ● デフォルト値で設定されている項目はほとんど 表示されない ● CLI での管理リソースのデータ構造と xml スキ ーマは完全一致していない
33.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 33 設定方法 3. standalone*.xml 直接編集 ● とはいうものの、全体の構成をつかむために眺 めておくのも有用です server ├ extensions ├ management ├ profile ├ interfaces └ socketbindinggroup ※ その他、必要に応じて path や deployments 属性が追加される
34.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 34 気を取り直して設定ポイント
35.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 35 io サブシステム
36.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 36 io サブシステム ● Undertow は /subsystem=io に依存 – リスナ ( 後述 ) が下記 2 項目を参照しており、性能 面での実質的なチューニングポイントになる可能性 が高い ● Workers ● Buffer Pool
37.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 37 io サブシステム ● Workers( 緑字はチューニング検討項目 ) – Stack size: スレッドのスタックサイズ。デフォルト 0(= 指 定しない ) – Task keepalive: 同一クライアントからのリクエストに対す るコネクションを何秒維持するか。デフォルト 60 秒 – IO threads: リクエストを受け付けるスレッドの数 – Task max threads: IOスレッドからディスパッチされるタ スクスレッドの最大数 – Task core threads: タスクスレッドの最小数 ( デフォルト 2) ● 無効なパラメータの可能性あり。 xml スキーマ中に存在しない = 永 続化されない , XNIO中で無視されている ?
38.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 38 io サブシステム ● IO threads – リクエストを受け付けるスレッドの数。ノンブロッ キングな処理を行う – デフォルト : 利用可能 CPU 数 *2
39.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 39 io サブシステム ● Task max threads – IO スレッドからディスパッチされるタスクスレッ ドの最大数。 Servlet などはブロッキングされる – デフォルト : 利用可能 CPU 数 *16
40.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 40 io サブシステム ● IO threadsと Task max threads – チューニングではこの 2 オプションがキー – サーブレットを使った簡易な検証では、 Task max threads の変更に効果がみられました ● 実際にタスク ( ブロッキング処理含む ) を実行するスレッ ドなので、 CPU リソースに見合った数を用意するべきと 考えます – IO threadsで実行する処理はノンブロッキングで あることも考えると、 IO threadsは相当な高負荷 である場合チューニングを検討するといったパラメ ータかもしれません
41.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 41 io サブシステム ● Buffer Pool(以下デフォルト値 ) – Buffer Size: 16KB ● バッファサイズ。一般的に 1 回の write() 呼び出しで送 られるサイズが 16KB なのでこの値は最適 – Buffer Per Slice: 20 ● バッファの分割数。大きなバッファを分割して操作し、 バッファ全体を処理する際のオーバヘッドを回避しま す。 – Direct Buffers: true ● バッファをダイレクトバッファとして利用するか ※ 上記デフォルト値は利用可能なヒープサイズが 128MB 以上の時の値です。
42.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 42 undertow サブシステム ● /subsystem=undertow – buffer-cache – server – servlet-container – configuration – error-page
43.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 43 undertow サブシステム ● Buffer Cache – 静的ファイルなどのキャッシュに利用 – 全体の容量は以下 ● buffer-size * buffers-per-region * max-regions – 以下、デフォルト値 ● buffer-size: 1024 ● buffers-per-region: 1024 ● max-regions: 10
44.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 44 undertow サブシステム ● Server – Undertow 全体の設定 ● リスナ ● ホスト – 設定したハンドラやフィルタをひもづける ( 後述 )
45.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 45 undertow サブシステム ● Server -> Listener – リクエストの受け付け、レスポンス処理 CLI でリスナの設定を確認する --------------------------------------------- [CLI] cd /subsystem=undertow/server=defaultserver/httplistener=default :readresource { "outcome" => "success", "result" => { [...] "bufferpool" => "default", (1) [...] "recordrequeststarttime" => true, [...] "worker" => "default" (2) } } (1)(2) ioサブシステムで定義したものを参照
46.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 46 undertow サブシステム ● Server -> Listener – リクエストの受け付け、レスポンス処理 [Tips]CLI でリスナの設定を変更する ----------------------------------------------------- [CLI] cd /subsystem=undertow/server=defaultserver/httplistener=default :writeattribute(name=recordrequeststarttime,value=true) { "outcome" => "success", "responseheaders" => { "operationrequiresreload" => true, "processstate" => "reloadrequired" } } /:reload リロードが必要なものの場合表示される
47.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 47 undertow サブシステム ● Server -> Listener – リクエストの受け付け、レスポンス処理 [Tips] 設定項目の内容 ( 型、説明、デフォルト値など ) を確認する ----------------------------------------------------------------------------------------- [CLI] cd /subsystem=undertow/server=defaultserver/httplistener=default :readresourcedescription { "outcome" => "success", "result" => { "description" => "http listener", "accessconstraints" => [...] "attributes" => { "recordrequeststarttime" => { "type" => BOOLEAN, "description" => “If this is true then ...” } } } }
48.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 48 undertow サブシステム ● Server -> Listener – リクエストの受け付け、レスポンス処理 [Tips]CLI の出力をリダイレクトする ( 内容が多く標準出力では見えづらい場合など ) ----------------------------------------------------------------------------------------------------------------------- [CLI] cd /subsystem=undertow/server=defaultserver/httplistener=default :readresourcedescription > /tmp/httplistenerdescription [Terminal] $ cat /tmp/httplistenerdescription { "outcome" => "success", "result" => { "description" => "http listener", [...]
49.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 49 undertow サブシステム ● Servlet Container – Servlet コンテナ設定 CLI で Servlet コンテナの設定を確認する ---------------------------------------------------------- [CLI] cd /subsystem=undertow/servletcontainer=default :readresource { "outcome" => "success", "result" => { "allownonstandardwrappers" => false, "defaultbuffercache" => "default", [...] "uselistenerencoding" => false, "setting" => {"jsp" => undefined} } }
50.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 50 undertow サブシステム ● Servlet Container – Servlet コンテナ設定 [Tips] 子要素 (setting -> jsp の設定も見たい場合 ------------------------------------------------------------------------ [CLI] cd /subsystem=undertow/servletcontainer=default :readresource(recursive=true) { "outcome" => "success", "result" => { [...] "setting" => {"jsp" => { "checkinterval" => 0, [...] }} } }
51.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 51 undertow サブシステム ● Servlet Container – Servlet コンテナ設定 [Tips] :read-resource-descriptionも再帰的に確認できる ---------------------------------------------------------------------------------- [CLI] cd /subsystem=undertow/servletcontainer=default :readresourcedescription(recursive=true) { "outcome" => "success", [...] "children" => {"setting" => { "description" => "The servlet container settings", "modeldescription" => { "jsp" => { }
52.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 52 アクセスログ ● デフォルトでは出力されない [CLI] cd /subsystem=undertow/server=defaultserver/httplistener=default :writeattribute(name=recordrequeststarttime,value=true) cd /subsystem=undertow/server=defaultserver/host=defaulthost/setting ./accesslog:add(prefix=access,pattern="%t,%a,%m,%U,%s,%D") /:reload レスポンスタイムを出すのに必要 ( デフォルト false) [Console] $ cat <WILDFLY_HOME>/standalone/log/access.log 25/Jun/2014:20:00:00 +0900,127.0.0.1,GET,/,200,12 pettern に設定できる値は以下クラスの javadoc から確認できます。 io.undertow.server.handlers.accesslog.AccessLogHanlder [Github]http://bit.ly/1jHlGs3
53.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 53 ルートコンテキストの変更 ● 任意のアプリケーションを http://<yourdomain>/ でアクセ スさせるためには以下の 2 ステップが必要 – welcome-content への参照 (File ハンドラ ) を削除 – アプリケーション中に WEB-INF/jboss-web.xml を作成する [CLI] cd /subsystem=undertow/server=defaultserver/host=defaulthost ./location="/":remove [ 以下内容の WEBINF/jbossweb.xml を作成 ] <?xml version="1.0" encoding="UTF8"?> <jbossweb> <contextroot>/</contextroot> </jbossweb>
54.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 54 Session Cookie ● WildFlyではグローバルなクッキー設定が可能 – comment – domain – http-only – max-age – name – secure 例 : クッキー設定を有効化し、クッキー名の変更と http-only 属性を設定する [CLI] cd /subsystem=undertow/servletcontainer=default/setting ./sessioncookie:add(name=MYCOOKIE,httponly=true) /:reload
55.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 55 Single Sign On ● 1 度の認証処理で複数の Web アプリケーショ ンの認証を行う ルート (/) を指定することで、全てのアプリケーションを SSO 対象にする。 “JSESSIONIDSSO” というクッキーを共有することで実現している [CLI] cd /subsystem=undertow/server=defaultserver/host=defaulthost/setting ./singlesignon:add(path="/") /:reload
56.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 56 Persistent Sessions ● セッションをファイルに永続化 <WILDFLY_HOME>/standalone/data/persistent-web-session に格納する場合 ※path を指定しない場合、セッションはメモリに格納される [CLI] cd /subsystem=undertow/servletcontainer=default/setting ./persistentsessions:add(path=persistentwebsessions, relativeto=jboss.server.data.dir) /:reload relative-to に組込システムプロパティを指定し、 <WILDFLY_HOME>/standalone/data を起点にしている
57.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 57 組込 Handler と Filter ● ポータビリティとの兼ね合いを判断して利用 ● Handler: 特定のリクエストパスに対して適用 – file – reverse-proxy ● Filter: リクエスト全体に対して適用※ – basic-auth – connection-limit – gzip – response-header ※Handler と組み合わせれば特定パスに適用可 ( 後述 )
58.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 58 File ハンドラ ● httpd でのエイリアス相当 http://localhost:8080/img/<file-path> で /var/images/<file-path> にアクセス --------------------------------------------------------------------------------------------------------------------- [CLI] cd /subsystem=undertow/configuration=handler/file ./images:add(path=/var/images) cd /subsystem=undertow/server=defaultserver/host=defaulthost/location ./"/img":add(handler=images) /:reload
59.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 59 Reverse Proxyハンドラ ● WildFly をリバースプロキシとして利用可能 host に設定した (1)(2) にラウンドロビンで振り分けられる ----------------------------------------------------------------------------------- [CLI] cd /subsystem=undertow/configuration=handler/reverseproxy ./myreverseproxy:add cd ./myreverseproxy ./host=”http://192.168.0.20:8080/myapp”:add < (1) ./host=”ajp://192.168.0.30:8009/myapp”:add < (2)ajp も可 cd /subsystem=undertow/server=defaultserver/host=defaulthost/location ./"/myapp":add(handler=myreverseproxy) /:reload
60.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 60 Basic Authフィルタ ● ベーシック認証フィルタ – 2014-06-25 現在、適切に動作しません ● https://issues.jboss.org/browse/WFLY-3342 指定した security domainによるベーシック認証フィルタ ----------------------------------------------------------------------------------- [CLI] cd /subsystem=undertow/configuration=filter/connectionlimit ./myauth:add(securitydomain=other) < ※other は最初から用意されている cd /subsystem=undertow/server=defaultserver/host=defaulthost/filterref ./myauth:add /:reload
61.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 61 Connection Limitフィルタ ● 同時接続数を制限 同時接続数と待ちキュー ( バックログ ) を設定できる ------------------------------------------------------------------------- [CLI] cd /subsystem=undertow/configuration=filter/connectionlimit ./myconnectionlimit:add(maxconcurrentrequests=100,queuesize=5) cd /subsystem=undertow/server=defaultserver/host=defaulthost/filterref ./myconnectionlimit:add /:reload HTTP リクエスト単位で制御したい場合やポータビリティが気になる場合は、 Servlet フィルタや JAX-RS フィルタを作成しましょう [ 参考 ] Tomcat や JBoss で HTTP リクエスト単位で並行実行数を制限するサーブレットフィルタ http://nekop.hatenablog.com/entry/20120424/1335254637
62.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 62 gzip フィルタ ● リソース gzip 圧縮 predicate で対象を指定する (gzip に限らず、フィルタは全てこの属性を持つ ) ------------------------------------------------------------------------------------------------------------- [CLI] cd /subsystem=undertow/configuration=filter/gzip ./mygzip:add cd /subsystem=undertow/server=defaultserver/host=defaulthost/filterref ./mygzip:add(predicate="pathsuffix['.css'] or pathsuffix['.js']") /:reload ● 通常 WildFly の前段に設置したリバースプロキシで設定すると思われるので、あまり利 用することはないかも ... 考えられるとしたら以下のようなパターン ? ● リバースプロキシ -WildFly 間の N/W 帯域を節約したい場合 ● リバースプロキシに CPU をあまり使わせたくない場合 ● WildFly がクライアントから直接リクエストを受ける場合
63.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 63 Response Header フィルタ ● 任意のレスポンスヘッダを追加 [CLI] cd /subsystem=undertow/configuration=filter/responseheader ./myheader:add(headername=MyHeader,headervalue=MyHeaderValue) cd /subsystem=undertow/server=defaultserver/host=defaulthost/filterref ./myheader:add /:reload
64.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 64 Response Header フィルタ ● デフォルトで設定されているヘッダを削除 [CLI] cd /subsystem=undertow/server=defaultserver/host=defaulthost/filterref ./serverheader:remove ./xpoweredbyheader:remove /:reload
65.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 65 ハンドラとフィルタの組み合わせ ● 特定のパスにのみ有効なフィルタ 特定パスのみヘッダを設定する例 ( 前述の /img と my-header を利用 ) [CLI] cd /subsystem=undertow/server=defaultserver/host=defaulthost/location ./"/img"/filterref=myheader:add
66.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 66 その他機能 ● error-page – 未実装 ? 調査中 ...
67.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 67 Undertow いろいろ
68.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 68 Undertow いろいろ ● Spring Boot Starter Undertow – https://github.com/isopov/spring-boot-starter-undertow – 組込み Web サーバは ...Jetty? Tomcat? Undertow! ● Hammock – https://github.com/johnament/hammock – RESTEasy + Weld + Undertow! ● undertow-dev メーリングリストにて – Undertow をリバースプロキシとして使いたい – などなど 単体でも注目度が高くなってきている
69.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 69 最後に ● Web はこれからも進化し、企業にとってもます ます重要なものとなります ● Undertow はモダン Web に追従するべく作られ ました。また、従来のアプリケーションに対して も申し分のないパフォーマンスを発揮するポテン シャルを持っています。 ● とはいえ開発からまだ 2 年。ぜひ応援を ! – 機能不足やバグ報告があれば要望、さらには PR! ● 微力ながら私もアクセスログにおける機能追加案を投稿し ました
70.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 70 参考 ● 公式サイト – http://undertow.io/ ● WildFly ドキュメント – https://docs.jboss.org/author/display/WFLY8/Unde rtow+(web)+subsystem+configuration ● WildFly 8 Administration Guide – http://www.itbuzzpress.com/ebooks/wildfly-8-book.h tml ● Dive Into WildFly 8 – 30:15~ からスペックリードによる Undertow の説明 – http://vimeo.com/79890483
71.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 71 参考 ● メーリングリスト – https://lists.jboss.org/mailman/listinfo/underto w-dev ● JIRA – https://issues.jboss.org/browse/UNDERTOW/
72.
Copyright(c)2014 NTT Corp.
All Rights Reserved. 72 参考 ● Undertow のソースツリーを眺める - nekop の日記 – http://d.hatena.ne.jp/nekop/20131224/1387938098 ● Experiences with migrating from JBoss AS 7 to WildFly 8.1 – JBoss Web -> Undertowの Tips も載っています – http://jdevelopment.nl/experiences-migrating-jboss-7-wildfly- 81/ ● JBoss Enterprise Application Platform 6 構築・運用パーフ ェクトガイド – JBoss EAP 6 向けですが、 WildFly 利用時でもほとんどの内容 を踏襲できるので、初めて触る方にもおすすめです – http://gihyo.jp/book/2013/978-4-7741-5794-8
Download