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
SSLセッションキャッシュを共有したいだけの人生だった
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yusuke Nojima
February 08, 2016
Technology
3.1k
6
Share
SSLセッションキャッシュを共有したいだけの人生だった
@nojima (Cybozu, Inc)
nginx tech talks
2016-02-08
http://eventdots.jp/event/578421
Yusuke Nojima
February 08, 2016
More Decks by Yusuke Nojima
See All by Yusuke Nojima
インフラ自動化の落とし穴と宣言的アーキテクチャ
nojima
24
12k
Nginx Hacking Guide
nojima
0
730
Other Decks in Technology
See All in Technology
Tachikawa.any 運営挨拶
daitasu
0
170
続 運用改善、不都合な真実 〜 物理制約のない運用改善はほとんど無価値 / 20260518-ssmjp-kaizen-no-value-without-physical-constraints
opelab
2
220
AIを賢くしたいなら、まずは人間の改善ループから
subroh0508
0
120
Claude Code / Codex / Kiro に AWS 権限を 渡すとき、何を設計すべきか
k_adachi_01
5
1.4k
R&D 祭 2024 UE5で絵コンテ・作画の制作支援ツールをつくる話
olmdrd
PRO
0
140
なぜ、私がCommunity Builderに?〜活動期間1か月半でも選出されたワケ〜
yama3133
0
130
ServiceによるKubernetes通信制御ーClusterIPを例に
miku01
1
170
【関西製造業祭り2026春】現場を変える技術はここまで来た〜世界最大の製造業見本市から持って帰ってきたもの〜
tanakaseiya
0
160
Vision Banana: Image Generators are Generalist Vision Learners
kzykmyzw
0
380
"スキルファースト"で作る、AIの自走環境
subroh0508
0
330
「背中を見て育て」からの卒業 〜専門技術としてのテスト設計を軸に、品質保証のバトンを繋ぐ〜 #genda_tech_talk
nihonbuson
PRO
3
1.4k
カオナビに Suspenseを導入するまで / The Road to Suspense at kaonavi
kaonavi
1
450
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Evolving SEO for Evolving Search Engines
ryanjones
0
190
Optimizing for Happiness
mojombo
378
71k
A designer walks into a library…
pauljervisheath
211
24k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
180
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Game over? The fight for quality and originality in the time of robots
wayneb77
1
170
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.4k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Transcript
SSLセッションキャッシュを 共有したいだけの人生だった @nojima Cybozu, Inc. nginx Tech Talks 2016-02-09 nginx
Tech Talks 1
SSL のハンドシェイクに 265ms もかかっている とあるサイトに SSL で接続してみる 2016-02-09 nginx Tech
Talks 2
265ms → 138ms (だいたい半分) になった!! もう一度接続してみる 2016-02-09 nginx Tech Talks
3
Why? • SSL セッションキャッシュのおかげ • SSL ハンドシェイクで共有したパラメータ (共有鍵とか) をキャッシュ しておく。
• 次回同じセッションIDで接続してきたクライアントに対しては パラメータの共有を省いて、いきなり TLS セッションを開始する。 • 効果 • ラウンドトリップが1往復分減る → レイテンシ減 • サーバ側の計算が減る → スループット増 ※ ブラウザによっては SSL セッションチケットという別の仕組みでセッション再開できるが、 IE や iOS Safari は対応していない。 2016-02-09 nginx Tech Talks 4
ところが nginx の標準機能では、 複数のサーバ間でセッションキャッシュを 共有できない!!! 2016-02-09 nginx Tech Talks 5
Client Layer 4 Load Balancer nginx-1 nginx-2 nginx-3 ① 最初のコネクションが
nginx-1 に割り振られる ② nginx-1 にセッションがキャッシュされる ③ 二回目のコネクションが nginx-3 に割り振られる ④ キャッシュがないので セッション再開できない!!! DC 2016-02-09 nginx Tech Talks 6
というわけで nginx の SSL セッションキャッシュを 共有できるようにするパッチを書いた。 2016-02-09 nginx Tech Talks
7
nginx-ssl-scache-sync-module • nginx が SSL セッションキャッシュを保存する処理にフック して、別のサーバの nginx に対してセッションキャッシュを 送り付ける仕組み。
• サイボウズの本番環境で使うために作った。 • 以下の URL で公開中 • https://gist.github.com/nojima/daac8c5710a2766bd638 • 1.9.10 より新しい nginx には当たらないので注意。多分そのうち直し ます。 2016-02-09 nginx Tech Talks 8
nginx-1 nginx-2 nginx-3 session cache ① SSL接続 が来る ② セッション
キャッシュ が生成される cache ③ 非同期に セッション キャッシュを 送りつける cache cache Client ④ 再び SSL 接続が来る ⑤ セッションが再開できる! session cache DC 2016-02-09 nginx Tech Talks 9
nginx-ssl-scache-sync-module • よかった点 • パフォーマンス向上 • 前述のとおり、キャッシュによってサーバのスループットが上がる。 • レイテンシも減るが、日本だとあまり実感できない。 •
Just Works!! • サイボウズの本番環境で1年間運用。トラブルなし。 • よくない点 • スケールしない • nginx サーバ台数に比例してセッションを共有する通信の負荷が上がってしまう。 2016-02-09 nginx Tech Talks 10
ところで H2O は? • H2O はセッションキャッシュの共有を標準でサポートしている。 • しかも memcached を使う方式なのでサーバ台数が増えても
大丈夫。 • 自分たちが memcached を使わなかったのは、OpenSSL の制約の都合 上実装できないと思っていたから。 • しかし、H2O は驚きのスーパーハックで解決していた: https://github.com/h2o/h2o/issues/118 2016-02-09 nginx Tech Talks 11
今日言いたかったこと 誰か H2O 方式のセッションキャッシュ 共有モジュールを書いてくれ!!!! (or ngx_ssl_session_fetch_by_lua に期待) 2016-02-09 nginx
Tech Talks 12
WE ARE HIRING サイボウズはインフラエンジニアを 募集しております 2016-02-09 nginx Tech Talks 13