Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
mod_mruby × ngx_mruby in Ruby・mrubyビジネスセミナーFUKU...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
MATSUMOTO Ryosuke
PRO
February 21, 2014
Technology
190
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
mod_mruby × ngx_mruby in Ruby・mrubyビジネスセミナーFUKUOKA2014
mod_mruby × ngx_mruby Ruby・mrubyビジネスセミナーFUKUOKA2014での資料です。
MATSUMOTO Ryosuke
PRO
February 21, 2014
More Decks by MATSUMOTO Ryosuke
See All by MATSUMOTO Ryosuke
問いを起点に、社会と共鳴する知を育む場へ
matsumoto_r
PRO
0
930
さくらインターネット研究所 アップデート2025年
matsumoto_r
PRO
0
980
リモートワークにおけるパッシブ疲労
matsumoto_r
PRO
6
5.6k
エンジニアのキャリアパスはどう描く? まつもとりーさんと考える後悔しないキャリア選択
matsumoto_r
PRO
10
2.5k
まつもとりーのこれまでとCOGNANOのこれから
matsumoto_r
PRO
0
390
2022年の研究所の評価制度振り返りと今後
matsumoto_r
PRO
0
960
VUCAワールドから紐解く組織や評価制度の変遷と再設計
matsumoto_r
PRO
9
27k
コンテナの研究開発から学ぶLinuxの要素技術
matsumoto_r
PRO
2
1.6k
開発者体験をさらに向上させる 事業と研究との連携
matsumoto_r
PRO
2
2.6k
Other Decks in Technology
See All in Technology
3つのアプローチで目指す チームを強くするAI駆動開発
thkt
0
120
IR Today: Theory, Practice, and Agents
dtunkelang
0
350
SREでアラート疲れを 解決しよう!
kairim0
1
200
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
2
1.4k
AI Made Us Faster at Solving the Wrong Problems
marceloancelmo
0
170
LocalStack を使ったサーバーレスアプリケーション開発 / Serverless Development with LocalStack
kakakakakku
0
210
ai_cording_with_k8s_knowledge.pdf
mochizuki875
1
300
IoTデバイスを繋げるプロトコルMatterをAndroidで使用する方法
harutiro
0
120
Futexes the good, the bad, the ugly
ennael
PRO
0
130
DWH の限界突破! AI エージェント向け爆速リアルタイムデータ基盤 ClickHouse
jozono
1
160
【データ横丁主催】AI Agentがコンテキストを使って仕事をした後、何が残るのか― 組織の経験を次の判断に引き継ぐ「Agent Memory」
shisyu_gaku
2
330
AgentCoreで実践するハーネスエンジニアリング
yakumo
1
280
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
4k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
570
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
570
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Why Our Code Smells
bkeepers
PRO
340
58k
Typedesign – Prime Four
hannesfritz
42
3.2k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Docker and Python
trallard
47
4.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Transcript
mod_mruby × ngx_mruby スクリプト言語で高速かつ省メモリに拡張可能な Web サーバの機能拡張支援機構 松本 亮介
自己紹介 • 松本亮介 – Twitter @matsumotory • 所属 – 京都大学
大学院 情報学研究科 岡部研究室 – 博士課程 D2 • 専門分野 – OS・Middlewareのセキュリティ・リソース管理・運 用技術改善・パフォーマンス・大規模対応 – http://research.matsumoto-r.jp/ 第6回 フクオカRuby大賞
mod_mruby × ngx_mruby[1] • スクリプトで高速・省メモリにWebサーバを拡張 – 生産性に関する組込みソフトウェア開発の課題を参考 – 性能とスクリプトによる生産性を両立した機能拡張機構 –
複数の異なるWebサーバの振る舞いを共通のDSLで記述 [1] 松本亮介,岡部 寿男, mod_mruby: スクリプト言語で高速かつ省メモリに拡張可能なWebサーバの機能拡 張支援機構, 情報処理学会第6回インターネットと運用技術シンポジウム, 2013年12月. 優秀論文賞受賞 - 第6回 フクオカRuby大賞 - 3
Webサーバの機能拡張の分類 1. 動的コンテンツの高速処理を主な目的 • レスポンス生成をいかに効率よくするか • CGIはforkのコストが大きい • サーバプロセスが直接スクリプトを解釈 •
アプリケーションサーバの登場 2. レスポンス生成以外の内部処理が主な目的 • Webサーバそのものの振る舞いを定義 • 軽量な処理が求められる(アクセス制御等) • この目的に特化したオーバーヘッドの少ない仕組み • mruby使うには最適では? ⇒ mod_mruby開発 第6回 フクオカRuby大賞
mod_mrubyの良い点 • Apache2.0から2.4の最新版で動く • ApacheモジュールをCでもRubyでも書ける • オーバーヘッドが少ない • 設定が簡単 •
ngx_mrubyでも同じような記述で書ける • 機能追加や改善要望を出しやすい 松本亮介,岡部 寿男, mod_mruby: スクリプト言語で高速かつ省メモリに拡張可能なWebサーバの機能拡張 支援機構, 情報処理学会第6回インターネットと運用技術シンポジウム, 2013年12月. 優秀論文賞受賞 第6回 フクオカRuby大賞
Apache httpd 設定例 # コンパイル方式: プロセス起動時もコードの変更可 <Location /proxy> mrubyTranslateNameMiddle /path/to/proxy.rb
</Location> # キャッシュ方式: コード変更不可だが高速に動作 <Location /proxy-cache> mrubyTranslateNameMiddle /path/to/proxy.rb cache </Location> 第6回 フクオカRuby大賞
nginx 設定例 # コンパイル方式: コードの変更可 Location /hello { mruby_contenx_handler /path/to/hello.rb;
} # キャッシュ方式: コード変更不可だが高速に動作 Location /hello-cache { mruby_contenx_handler /path/to/hello.rb cache; } 第6回 フクオカRuby大賞
Reverse Proxy by mod_mruby 第6回 フクオカRuby大賞
Reverse Proxy by mod_mruby 第6回 フクオカRuby大賞 backends = [ "http://127.0.0.1:8001/",
"http://127.0.0.1:8002/", "http://127.0.0.1:8003/", "http://127.0.0.1:8004/", ] r = Apache::Request.new backend = backends[rand(backends.length)] r.reverse_proxy backend + r.uri
BasicAuth with Redis by mod_mruby 第6回 フクオカRuby大賞
リソース制御として応用 r = Apache::Request.new if r.user == “matsumoto_r” cpu =
Cgroup::CPU.new “cpu_group” # CPUを10%に制御したい場合 cpu.cfs_quota_us = 10000 cpu.create cpu.attach end 松本亮介, 岡部寿男, リクエスト単位で仮想的にコンピュータリソースを分離するWebサーバのリソース制御 アーキテクチャ, 情報処理学会研究報告 Vol.2013-IOT-23, No.4, 2013年9月. 学生奨励賞受賞 第6回 フクオカRuby大賞
15688.92 21098.05 21435.75 46571.37 52503.36 64887.54 0 10000 20000 30000
40000 50000 60000 70000 mod_mruby mod_mruby cache apach httpd index.html ngx_mruby nginx index.html ngx_mruby cache REQUESTS/SEC mod_mruby ngx_mruby Peformance (ab -k -c 100 -n 100000 http://127.0.0.1/*)
まとめ • レスポンス生成処理以外の内部処理を目的 • mrubyによってオーバーヘッドを低減 • Rubyで複数のWebサーバの振る舞いを記述 – 柔軟なリソース制御・アクセス制御 •
Webサービスの各種サーバの連携に最適 • Web以外のサーバソフトウェアにも応用可能 – メールサーバ、ファイルサーバ… 第6回 フクオカRuby大賞