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
More Decks by MATSUMOTO Ryosuke
See All by MATSUMOTO Ryosuke
問いを起点に、社会と共鳴する知を育む場へ
matsumoto_r
PRO
0
910
さくらインターネット研究所 アップデート2025年
matsumoto_r
PRO
0
960
リモートワークにおけるパッシブ疲労
matsumoto_r
PRO
6
5.6k
エンジニアのキャリアパスはどう描く? まつもとりーさんと考える後悔しないキャリア選択
matsumoto_r
PRO
10
2.5k
まつもとりーのこれまでとCOGNANOのこれから
matsumoto_r
PRO
0
390
2022年の研究所の評価制度振り返りと今後
matsumoto_r
PRO
0
950
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
10分で知る最近のOmarchy
komagata
0
310
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
1.8k
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
730
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
720
開発投資の期待値を上げるプロダクトロードマップづくり ~プロダクトエンジニアが越境して事業を伸ばす~
kekekenta
0
110
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
3
550
あるけみー式LTスライド作成術
alchemy1115
1
210
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
400
GoにおけるFFIのこれまでとこれから
goccy
5
3.2k
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
1
1.3k
GoCon2026 - Open Source, Open World
sanposhiho
4
4.5k
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
10
4.9k
Featured
See All Featured
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
500
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
720
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
240
Discover your Explorer Soul
emna__ayadi
2
1.3k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Code Review Best Practice
trishagee
74
20k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
The browser strikes back
jonoalderson
0
1.7k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
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大賞