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
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
Transcript
13 slides
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大賞
More Decks by MATSUMOTO Ryosuke
See All by MATSUMOTO Ryosuke
問いを起点に、社会と共鳴する知を育む場へ
matsumoto_r
PRO
0
950
さくらインターネット研究所 アップデート2025年
matsumoto_r
PRO
0
1k
リモートワークにおけるパッシブ疲労
matsumoto_r
PRO
6
5.6k
エンジニアのキャリアパスはどう描く? まつもとりーさんと考える後悔しないキャリア選択
matsumoto_r
PRO
10
2.5k
まつもとりーのこれまでとCOGNANOのこれから
matsumoto_r
PRO
0
400
2022年の研究所の評価制度振り返りと今後
matsumoto_r
PRO
0
990
VUCAワールドから紐解く組織や評価制度の変遷と再設計
matsumoto_r
PRO
8
27k
コンテナの研究開発から学ぶLinuxの要素技術
matsumoto_r
PRO
2
1.6k
開発者体験をさらに向上させる 事業と研究との連携
matsumoto_r
PRO
2
2.6k
Other Decks in Technology
See All in Technology
Claude Codeで新規事業を伸ばせるか? Zennの試行錯誤の記録
wadayusuke
2
160
AIエージェントの監視、思考を見るか行動を見るか / Monitoring AI Agents: Thoughts or Actions
yusukeshimizu
2
190
2026-11-11 Tamachi.sre#7 PaCにインフラリソースの命を救われました。 / PaC saves the infra resource life
masasuzu
0
150
AWS基盤改善を支える 私たちの理念と行動指針
kentosuzuki
0
200
Kiro CLI 入門 (ターミナルと CI で使う) | 目指せ Kiro マスター 03
inariku
PRO
2
140
SREのためのFinOps入門
muziyoshiz
3
1.5k
Agent Harnessはどう作る?事例から学ぶAI Agentの設計思想
sergicalsix
0
280
Bots in Kiro Crew (One point of contact for ongoing work) | Kiro: Zero to Hero 12
inariku
PRO
1
130
並列度を下げたら速くなった — go build の重複コンパイルを実測で見る
tomoaki25
2
1.2k
【Oracle AI SPOTLIGHT ウェビナー】【特別開催:日本語で解説!】Oracle AI World 2026 最新情報フィードバック
oracle4engineer
PRO
1
200
GCASアップデート(202607-202610)
techniczna
1
320
Kiro Crew 入門 (手を離しても進む仕事) | 目指せ Kiro マスター 11
inariku
PRO
4
730
Featured
See All Featured
Mind Mapping
helmedeiros
1
440
Faster Mobile Websites
deanohume
310
32k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.3k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
1
240
Embracing the Ebb and Flow
colly
88
5.2k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
560
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
2
520
KATA
mclloyd
PRO
35
16k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
For a Future-Friendly Web
brad_frost
184
11k