Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
mod_mruby × ngx_mruby in Ruby・mrubyビジネスセミナーFUKU...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
MATSUMOTO Ryosuke
PRO
February 21, 2014
Technology
180
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
840
さくらインターネット研究所 アップデート2025年
matsumoto_r
PRO
0
910
リモートワークにおけるパッシブ疲労
matsumoto_r
PRO
6
5.5k
エンジニアのキャリアパスはどう描く? まつもとりーさんと考える後悔しないキャリア選択
matsumoto_r
PRO
10
2.4k
まつもとりーのこれまでとCOGNANOのこれから
matsumoto_r
PRO
0
370
2022年の研究所の評価制度振り返りと今後
matsumoto_r
PRO
0
900
VUCAワールドから紐解く組織や評価制度の変遷と再設計
matsumoto_r
PRO
9
26k
コンテナの研究開発から学ぶLinuxの要素技術
matsumoto_r
PRO
2
1.6k
開発者体験をさらに向上させる 事業と研究との連携
matsumoto_r
PRO
2
2.5k
Other Decks in Technology
See All in Technology
2026TECHFRESH畢業分享會 - Lightning Talk - 資料也要 CI/CD? 用 Airbyte 自動化資料同步
line_developers_tw
PRO
0
740
MIERUNE JCT 発表資料「宇宙から伊能忠敬ごっこ」
syuchimu
0
200
How Timee Delivers Day 1 Production Ready LLM Features
tomoyks
0
110
AIっぽい文章を採点して人間らしく直すアプリを作ってみた
yama3133
2
120
タクシーアプリ『GO』の実践的データ活用
mot_techtalk
3
190
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
100
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
760
EventBridge Connection
_kensh
5
690
Microsoft Build Keynoteふりかえり
tomokusaba
0
120
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
5
1.3k
攻撃者視点で考えるDetection Engineering
cryptopeg
1
1k
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
450
How to build a perfect <img>
jonoalderson
1
5.6k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
220
Design in an AI World
tapps
1
240
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
HDC tutorial
michielstock
2
700
GraphQLとの向き合い方2022年版
quramy
50
15k
The Cult of Friendly URLs
andyhume
79
6.9k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
160
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
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大賞