$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Trusterd: HTTP/2 Web Server scripting with mruby
Search
MATSUMOTO Ryosuke
PRO
January 28, 2015
Technology
3
880
Trusterd: HTTP/2 Web Server scripting with mruby
mrubyで振る舞いを記述可能な高速に動作するHTTP/2 Webサーバ
MATSUMOTO Ryosuke
PRO
January 28, 2015
Tweet
Share
More Decks by MATSUMOTO Ryosuke
See All by MATSUMOTO Ryosuke
問いを起点に、社会と共鳴する知を育む場へ
matsumoto_r
PRO
0
710
さくらインターネット研究所 アップデート2025年
matsumoto_r
PRO
0
780
リモートワークにおけるパッシブ疲労
matsumoto_r
PRO
6
5.4k
エンジニアのキャリアパスはどう描く? まつもとりーさんと考える後悔しないキャリア選択
matsumoto_r
PRO
10
2.3k
まつもとりーのこれまでとCOGNANOのこれから
matsumoto_r
PRO
0
330
2022年の研究所の評価制度振り返りと今後
matsumoto_r
PRO
0
810
VUCAワールドから紐解く組織や評価制度の変遷と再設計
matsumoto_r
PRO
9
26k
コンテナの研究開発から学ぶLinuxの要素技術
matsumoto_r
PRO
2
1.6k
開発者体験をさらに向上させる 事業と研究との連携
matsumoto_r
PRO
2
2.4k
Other Decks in Technology
See All in Technology
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
16k
Flutter Thread Merge - Flutter Tokyo #11
itsmedreamwalker
1
130
小規模チームによる衛星管制システムの開発とスケーラビリティの実現
sankichi92
0
180
生成AIシステムとAIエージェントに関する性能や安全性の評価
shibuiwilliam
2
300
ECMAScript仕様の最新動向: プロセスの変化と仕様のトレンド
uhyo
2
310
Docker, Infraestructuras seguras y Hardening
josejuansanchez
0
140
Introduction to Bill One Development Engineer
sansan33
PRO
0
320
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
46k
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
進化の早すぎる生成 AI と向き合う
satohjohn
0
480
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
970
一億総業務改善を支える社内AIエージェント基盤の要諦
yukukotani
9
2.6k
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
RailsConf 2023
tenderlove
30
1.3k
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
The Pragmatic Product Professional
lauravandoore
37
7k
Designing for Performance
lara
610
69k
Practical Orchestrator
shlominoach
190
11k
Code Review Best Practice
trishagee
73
19k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Transcript
5SVTUFSE NSVCZͰৼΔ͍Λهड़Մೳͳ ߴʹಈ࡞͢Δ)5518FCαʔό দຊ྄հ
࣍ • 5SVTUFSEͷಛ • 3VCZΛద༻ͨ͠Օॴ • 3VCZΛ׆༻ͨ͜͠ͱʹΑΔޮՌ • ࣾձʹٴ΅͢Өڹ 第7回フクオカRuby大賞
本審査 2
5SVTUFSEͷಛ 第7回フクオカRuby大賞 本審査 3
5SVTUFSE • )5518FCαʔό • 3VCZͰઃఆ͕ॻ͚Δ • 3VCZͰػೳ֦ுͰ͖Δ • αʔόػೳΛΞϓϦʹࠐΈՄೳ •
ඇৗʹߴʹಈ࡞͢Δ 第7回フクオカRuby大賞 本審査 4
ߴʢ݄ݱࡏʣ HTTP/2 Server \ size of content 6 bytes 4,096
bytes ngh)pd(single thread) 148,841 73,812 ngh)pd(mul= thread) 347,152 104,244 =ny-‐ngh)pd(single thread) 190,223 82,047 trusterd(single thread) 204,769 92,068 trusterd(mul= process) 509,059 134,542 H2O(single thread) 216,453 112,356 H2O(mul= thread) 379,623 146,343 第7回フクオカRuby大賞 本審査 5 HTTP/1 Server \ size of content 6 bytes 4,096 bytes nginx(single thread) 21,708 22,366 nginx(mul= process) 67,349 56,203 ࢀߟɿಉڥͷ)551ͷ݁Ռɹ ※ https://github.com/matsumoto-r/trusterd#benchmarks
։ൃͷܦҢ • աڈʹNPE@NSVCZOHY@NSVCZΛ։ൃ – ߴɾলϝϞϦʹ8FCαʔόΛػೳ֦ு – 3VCZͰ͋ΔఔৼΔ͍Λهड़Մೳ – ಈతͳઃఆɾ֦ுΛ3VCZͰهड़Մೳ •
NPE@NSVCZOHY@NSVCZͷଥڠ – ੑೳ͕"QBDIFOHJOYʹґଘ – ઃఆͷ֦ு࣮͕Ϟδϡʔϧ༷ʹґଘ – ݁ہຊମͷઃఆ͔ΒಀΕΒΕͳ͍ɾࠞࡏ 第7回フクオカRuby大賞 本審査 6
͔Β࡞Ζ͏ • ޙΛݟӽͯ͠ • Ͳ͏ͤͳΒ)5518FCαʔό • શͯͷઃఆ֦ுΛ3VCZͰॻ͚Δ • NSVCZʹ࠷దԽ͞Εͨ8FCαʔό •
ػೳͷͱଞΞϓϦͷࠐΈ 第7回フクオカRuby大賞 本審査 7
3VCZΛద༻ͨ͠Օॴ 第7回フクオカRuby大賞 本審査 8
5SVTUFSE • )5518FCαʔό • 3VCZͰઃఆ͕ॻ͚Δ • 3VCZͰػೳ֦ுͰ͖Δ • αʔόػೳΛΞϓϦʹࠐΈՄೳ •
ඇৗʹߴʹಈ࡞͢Δ 第7回フクオカRuby大賞 本審査 9
3VCZͰઃఆ͕ॻ͚Δ 第7回フクオカRuby大賞 本審査 10 root_dir = "/usr/local/trusterd" s = HTTP2::Server.new({
:port => 8080, :document_root => “#{root_dir}/htdocs”, :server_name => “Trusterd/0.0.1”, :tls => false, :worker => “auto”, }) s.run
3VCZͰػೳ֦ுͰ͖Δ 第7回フクオカRuby大賞 本審査 11 s.set_map_to_strage_cb { if s.r.uri == ”/”
s.r.filename = "#{root_dir}/index.html” end if s.r.uri =~ /^.*\.rb$/ s.enable_mruby fi } s.set_content_cb { s.r.rputs "hello trusterd world from cb” }
3VCZͰػೳ֦ுͰ͖Δ 第7回フクオカRuby大賞 本審査 12 f = File.open "#{root_dir}/logs/access.log", "a" s.set_logging_cb
{ f.write "client_ip:'#{s.conn.client_ip}' date:'#{s.r.date}' status:#{s.r.status} content_length:#{s.r.content_length} uri:'#{s.r.uri}' filename:'#{s.r.filename}' user_agent:'#{s.r.user_agent}'\n" } s.set_access_check_cb { s.r.set_status 403 if deny }
3VCZͰػೳ֦ுͰ͖Δ 第7回フクオカRuby大賞 本審査 13 s.set_map_to_strage_cb { # Experiment: reverse proxy
# client <=HTTP/2=> trusterd <=HTTP/1=> Upstream if s.r.uri == /^/upstream(¥/.*)/ s.upstream_uri = $1 s.upstream = “http://127.0.0.1:8081” end }
αʔόػೳΛΞϓϦʹࠐΈ • NSVCZIUUQͱͯ͠Մೳ • NSVCZܦ༝ͰࠐΈՄೳ • ϛυϧΣΞΞϓϦͰ)551௨৴ • NSVCZͷࡌΔσόΠεͰ)551௨৴ 第7回フクオカRuby大賞
本審査 14
3VCZΛ׆༻ͨ͜͠ͱʹΑΔޮՌ 第7回フクオカRuby大賞 本審査 15
ߴ͍ϨϕϧͰੜ࢈ੑͱੑೳͷཱ྆ • ैདྷͷಠࣗઃఆॻ͖ʹ͔ͬͨ͘ – ੩తͳઃఆʹͳΓ͕ͪ – ಠࣗ%4-͍ʹ͍͘ – ࠓޙͷ8FCαʔϏεͷߴԽʹ͍͚ͳ͍ • NSVCZͰ౷Ұతʹಈతͳઃఆهड़ – )551ΛΞϓϦσόΠεʹࠐΊΔ – ຊମ$ݴޠͰ࣮͓ͯ͠Γඇৗʹߴ
– ઃఆͷ3VCZԽ͕࣮͍͢͠ɾअຐ͠ͳ͍ 第7回フクオカRuby大賞 本審査 16
ࣾձʹٴ΅͢Өڹ 第7回フクオカRuby大賞 本審査 17
NSVCZͰઃఆΛॻ͘ΞϓϦͷීٴ • ߴ͔ͭ3VCZʹΑΔಈతͳઃఆ – 8FCܥΤϯδχΞ͕ѻ͍͍͢ – ։ൃऀӡ༻ऀͲ͜Ͱ3VCZΛֶΔ – 3VCZNSVCZͷීٴʹߩݙ • )551ϓϩτίϧΛ༰қʹར༻Մೳ – $ΞϓϦσόΠεʹػೳࠐΈ – ϓϩτίϧ)551ͰઃఆNSVCZ
– )551ͷීٴʹߩݙ 第7回フクオカRuby大賞 本審査 18