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
メタデータ同期に潜んでいた問題 〜 Cache Stampede 時の Cycle Wait ...
Search
LINEヤフーTech (LY Corporation Tech)
PRO
March 02, 2026
Technology
240
0
Share
メタデータ同期に潜んでいた問題 〜 Cache Stampede 時の Cycle Wait を⾒つけた話
2026年2月24日に開催された「YugabyteDB Japan Meetup #7」での発表資料です。
LINEヤフーTech (LY Corporation Tech)
PRO
March 02, 2026
More Decks by LINEヤフーTech (LY Corporation Tech)
See All by LINEヤフーTech (LY Corporation Tech)
コーポレートサイトのアクセシビリティ改善とJIS準拠への実践
lycorptech_jp
PRO
1
75
Yahoo!ファイナンス - 投資の「難しい・手間がかかる」を「分かる・簡単にする」-
lycorptech_jp
PRO
0
32
Slack MCPでインシデント対応とFAQ生成を加速する:社内ワークショップの実践
lycorptech_jp
PRO
0
19
SDDで⾒える、AIコーディングの"内訳"
lycorptech_jp
PRO
0
44
コーディングAIが導くリスクベースド探索的テストの実践
lycorptech_jp
PRO
1
37
Orchestration Development Workshopを半期実施して
lycorptech_jp
PRO
0
24
Agent Development Kit (ADK)で学ぶ実践Context Engineeringと社内での応用例
lycorptech_jp
PRO
0
38
Personal knowledge bases using LLM
lycorptech_jp
PRO
0
38
Geminiの簡単なコンテキストエンジニアリング
lycorptech_jp
PRO
1
57
Other Decks in Technology
See All in Technology
Pythonでベイズモデリング
soogie
0
150
続 運用改善、不都合な真実 〜 物理制約のない運用改善はほとんど無価値 / 20260518-ssmjp-kaizen-no-value-without-physical-constraints
opelab
2
270
ワールドカフェ再び、そしてゴール・ルール・ロール・ツール / World Café Revisited, and the Goals-Rules-Roles-Tools
ks91
PRO
0
180
いつの間にかデータエンジニア以外の業務も増えていたけど、意外と経験が役に立ってる
zozotech
PRO
0
700
AWS運用におけるAI Agent活用術 / JAWS-UG 神戸 #11 LT大会
genda
1
310
障害対応のRunbookは作った、でも本当に動くの? AWS FIS で EKS の AZ 障害を再現してみた
tk3fftk
0
120
AIAgentと取り組むKaggle
508shuto
2
440
実例から学ぶ GuardDuty(SSH BruteForce)調査の全体フローと勘所【SecurityJAWS】
cscengineer
PRO
0
150
"スキルファースト"で作る、AIの自走環境
subroh0508
0
630
TSKaigi 2026 - enumよ、さようなら
teamlab
PRO
1
190
R&D 祭 2024 UE5で絵コンテ・作画の制作支援ツールをつくる話
olmdrd
PRO
0
200
React Compiler導入の効果と運用の工夫
kakehashi
PRO
3
290
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
KATA
mclloyd
PRO
35
15k
Why Our Code Smells
bkeepers
PRO
340
58k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
460
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
250
SEO for Brand Visibility & Recognition
aleyda
0
4.5k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Docker and Python
trallard
47
3.8k
Statistics for Hackers
jakevdp
799
230k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
700
Transcript
© LY Corporation メタデータ同期に潜んでいた問題 ~ Cache Stampede 時の Cycle Wait
を見つけた話 YugabyteDB Japan Meetup #7 LT 24th February 2026 TAKAMI Torao
自己紹介 (About Me) 1 鷹見虎男 TAKAMI Torao LINE 開発 ::
Messaging Platform 開発 :: Platform Storage :: Storage Lab Software Engineer ◆ 専門: ソフトウェア設計・開発 ◆ 経歴: 元金融系SI開発, JavaPress 特集, Web系開発, 分散処理基盤, ブロックチェーン開発 ◆ 興味: (構造的|確率的|分散|暗号) アルゴリズム, 認知行動科学 ◆ 趣味: 旅行, ドライブ, 映画, 文房具, コーヒー, Rust, Scala
ALTER TABLE … GRANT ALL PRIVILEGES ON … メタ情報更新 (DDL/DCL)
YugabyteDB 検証中の出来事 高負荷トラフィック × メタデータ変更 → 全ノード沈黙 YCSB Benchmark 2 各ノード ysql_max_connections=1500 に拡張 (デフォルト 50-300) 想定接続数: 1000 接続/ノード [検証の目的] 一般に、大量のデータと高トラフィックの状況下 でテーブルのスキーマ変更を行うと、かなりの時 間がかかることがある。YugabyteDB ではどう か? [予期しない結果] クラスタ内のすべてのノードが応答を返さなくな り、復旧は TServer の再起動しかないという挙動 が確認された。 [発生状況の整理] • 高負荷下でのメタデータ (テーブルスキーマ、 ユーザ権限など) の変更によって比較的高い再 現性で発生する。 • 単一ノード (yugabyted) でも発生する。 • 1 ノードあたりの接続数が 1000 を超えるあた りから発生しやすくなる。 継続的な トラフィック YugabyteDB Cluster … … … … …
YB-Master YB-TServer オンラインDDL実行「後」の裏側 PostgreSQL backend から YB-Master へのメタデータキャッシュ同期メカニズム Client Query
Layer (YSQL) PostgreSQL-fork SQL parsing, Planning, and Execution postmaster backend (session 1) backend (session 2) … backend (session 𝑁) 1 クライアント接続 1 プロセス (PostgreSQLと同じ) 𝑁 = ysql_max_connections (default: 50-300) PgGate YBClient 𝑀 = rpc_workers_limit (default: 1024) SysCatalog PostgreSQL -compatible SQL 3 Storage Layer (DocDB) YB-TServer Process Sharding, Replication (Raft), and Transaction (2PC) PgTableCache rpc_thread_pool Thread 2 Thread 1 Thread 3 …Thread 𝑀 OpenTable (local RPC) GetTableSchema (async remote RPC) • 各セッションは現在のカタログバージョンを認 識している。 • クエリーの実行過程でそれらが変わったことを 検知するとメタデータを再読み込みする。
YB-Master YB-TServer Client Query Layer (YSQL) postmaster backend (session 1)
backend (session 2) … backend (session 𝑁) 高負荷状態で何が起きたか? キャッシュ更新要求の殺到によるスレッドプールの占有と相互ブロック Storage Layer (DocDB) PgClientService PgTableCache rpc_thread_pool SysCatalog GetTableSchema (async remote RPC) 4 Thread 2 Thread 1 Thread 3 OpenTable (local RPC) queue • 実行中のスレッドはすべてキャッシュ更新待ち。 • キャッシュを更新する処理はスレッドの空き待ち。
5 1024個中、1023個のス レッドが同じ場所で止 まっている。 TServer の Web UI 最先発のスレッド?
調査プロセスと提案 最終的な解決策 normal_thread_pool_ 問題解消: コールバックスレッドの分離 メタ情報更新コールバックの High-Priority 実行による Cyclic Wait
の解消 6 rpc_thread_pool Thread 2 Thread 1 Thread 3 queue high_priority_thread_pool_ Thread 2 Thread 1 Thread 3 queue (主にコンセンサスサービス用) 停止位置の特定 • gdb や Web UI でスレッド状況 ➢ GetTableSchema RPC 内でデッドロック? • YB-Master, YB-TServer のログ調査 ➢ 応答は成功している。しかしコールバックが実行 されていない? (invoke_callback_time: -inf) 仮説の検証 (PoC) 1. スレッドプールのサイズを小さくするとすぐ再現 2.キャッシュ更新待機にタイムアウト設定 (コード修正) → 時間はかかるが回復した 提案 1. ysql_max_connections < rpc_workers_limit を強制 2. キャッシュ更新待機の上限時間設定 3. キャッシュ更新待機数のスロットリング 4. コールバック処理のスレッド分離 5. キャッシュ更新スレッドの同期化 報告 #26909、修正 8eb99ac, ee32946, 6e24f3f。 2024.2.4, 2025.1.0 以降で対応済み。 GetTableSchema の コールバック 優先度「高」で実行 (実は2つのスレッドプールを内包している)
7 状況分析と仮説検証 複雑な事象もログとアーキテ クチャの分析から仮説を立て、 PoCで検証を実施。結果とし て主因の特定と具体的な改善 案を伴う、実効性の高い問題 報告に繋がりました。 迅速かつ抜本的な対応 即座に
priority:high でトリ アージされました。表面的な 対処ではなく、アーキテク チャレベルの抜本的な改修が 速やかに行われた Yugabyte チームの対応に感謝します。 難題に挑む仲間を募集 内部アーキテクチャに踏み込 んだ課題解決を通じ、大規模 分散ストレージ基盤の構築を 進めています。分散システム の深い理解と実践に興味のあ る方を歓迎します。 一ノ矢は避けられない。しかし二ノ矢は打ち落とさなければならない。 ~ サンユッタ・ニカーヤ「矢の経」~ LY00093 www.lycorp.co.jp/ja/recruit/career/job-categories/ly00093/