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
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
ADOTで始めるサーバレスアーキテクチャのオブザーバビリティ
alchemy1115
2
270
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.3k
BIツール「Omni」の紹介 @Snowflake中部UG
sagara
0
250
プロンプトエンジニアリングを超えて:自由と統制のあいだでつくる Platform × Context Engineering
yuriemori
0
120
Kubernetes基盤における開発者体験 とセキュリティの両⽴ / Balancing developer experience and security in a Kubernetes-based environment
chmikata
0
220
3つのボトルネックを解消し、リリースエンジニアリングを再定義した話
nealle
0
320
"まず試す"ためのDatabricks Apps活用法 / Databricks Apps for Early Experiments and Validation
nttcom
1
220
すごいぞManaged Kubernetes
harukasakihara
1
370
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
2
17k
OpenClaw初心者向けセミナー / OpenClaw Beginner Seminar
cmhiranofumio
0
370
DevOpsDays2026 Tokyo Cross-border practices to connect "safety" and "DX" in healthcare
hokkai7go
0
110
NgRx SignalStore: The Power of Extensibility
rainerhahnekamp
0
160
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Mobile First: as difficult as doing things right
swwweet
225
10k
Mind Mapping
helmedeiros
PRO
1
150
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
160
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
250
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Code Reviewing Like a Champion
maltzj
528
40k
Being A Developer After 40
akosma
91
590k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
350
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
How to Talk to Developers About Accessibility
jct
2
170
HDC tutorial
michielstock
1
610
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