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
1MBの壁にぶつかった話
Search
赤神青空
PRO
September 03, 2026
Video
Programming
34
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
1MBの壁にぶつかった話
赤神青空
PRO
September 03, 2026
Video
More Decks by 赤神青空
See All by 赤神青空
【AWS AIF対策】AIシステムを守る
akagami
PRO
0
13
【AIニュース】ChatGPT Space とは何か
akagami
PRO
0
20
【AWS AIF対策】透明性と説明可能性
akagami
PRO
0
16
【AIニュース】OpenAI の「dots」とは何か
akagami
PRO
0
22
【AWS AIF対策】責任あるAI
akagami
PRO
0
24
【AWS AIF対策】基盤モデルの評価
akagami
PRO
0
27
【AWS AIF対策】モデルの学習とファインチューニング
akagami
PRO
0
17
【AWS AIF対策】プロンプトエンジニアリング
akagami
PRO
0
17
【AWS AIF対策】RAGとベクトルデータベース
akagami
PRO
0
17
Other Decks in Programming
See All in Programming
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
270
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
5.4k
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
440
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
20
21k
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
13
6.5k
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
230
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
440
Are APIs Still Relevant in the AI Era?
soyuka
0
420
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
440
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
150
Featured
See All Featured
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Thoughts on Productivity
jonyablonski
76
5.4k
The SEO Collaboration Effect
kristinabergwall1
1
590
Designing Powerful Visuals for Engaging Learning
tmiket
1
590
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
300
Building the Perfect Custom Keyboard
takai
2
890
Being A Developer After 40
akosma
91
590k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
How to make the Groovebox
asonas
2
2.5k
Transcript
2026年8月 1MB の壁にぶつかった話 ローカルでは絶対に再現しない 赤神 青空 SCOM
▪アンケートの集計ツール/NestJS 前提:本番だけ Data API を挟んでいる + TypeORM + Aurora ローカル開発環境
Docker の PostgreSQL に通常のドライバで直結 結果セットのサイズ上限がない だから、このバグは一度も再現しない 本番環境 Lambda から Data API 経由で Aurora へ VPC 内に Lambda を置かずに済む構成 1クエリの結果セットは 1MB まで この一点の差だけが、今日の話の全てです。 今ココ 前提 2/10
▪その間、デプロイもコード変更もしていない 症状:昼は動いていた画面が、夜には 500 昼 21:18 翌朝 +15分 今ココ 症状 担当者が「回答一覧」画面を普通に使えていた
同じ画面が HTTP 500。以降ずっと開けない 「まだ再現している」と報告 本番のログを見て、1行で原因確定 3/10
▪コードから立てた仮説は、どれも「形は合っている」 外れた仮説 500 が返る経路として、まず2つを疑った。 どちらも、症状の形とは矛盾していなかった。 01 02 判定が failure だと例外
→ そのまま 500。「403 ではなく 500」と 形が合う 前日に修正を2件入れていた。調べたら dev 止まりで本番未反映だ った 認可ライブラリ 今ココ 調査 デプロイ不整合 4/10
▪本番の ログ1行で確定した Lambda ロググループに、同じ例外が繰り返し出ていた The result exceeds the size limit
1 MB. Data API の仕様 1クエリの結果セットは 1MB まで。超えると API が 400 を 返す。 設定では変えられない Data API 側の固定値。結果サイズを減らして下回らせるし かない。 フレームワークがこの例外を拾えず、そのまま 500 になって画面に出ていた。 今ココ 真因 5/10
▪一覧を取得しているのは、これだけ 犯人のコード 特殊なことは何もしていない。ごく普通の書き方。 ts this.responses.find({ where: { surveyId, collectorId },
relations: { respondent: { organization: true }, answers: { question: true }, }, }) 今ココ 真因 6/10
▪552 行 既定では、1本の LEFT JOIN になる = 46 回答 ×
12 設問。各行に回答データが丸ごと乗る 意図している姿 実際に返ってきたもの 46 件 552 行(46 回答 × 12 設問) 回答 ︙ 回答A 回答データ 4.8KB 設問1 回答データ 4.8KB 回答B 回答データ 4.8KB 設問2 回答データ 4.8KB 設問3 回答データ 4.8KB 設問4 回答データ 4.8KB 合計 220KB 設問への回答 LEFT JOIN 552 行 値だけの軽い行 ︙ 同じ回答データが 552 回コピーされる 結果セットのサイズ(概算) 上限 1MB ︙ 概算 2.5MB 回答データは 46 個ぶんだけ 1MB を超えた瞬間に Data API が 400 1MB に対して十分に軽い アプリ側は拾えず、そのまま 500 1行に付いている重い荷物が、552回コピーされている(2.5MB は概算) 今ココ 真因 7/10
▪まだ答えていない設問には、行がそもそも存在しない 伏線回収:このバグは時間とともに発症する 行が増える → 回答が集まる 行が増える → 回答データの複製も 閾値へ 設問が埋まっていく
昼は開けたのに夜は落ちた その日のうちに回答が集まり、閾値を越 えた。 今ココ 真因 その分だけ増える 壊れ方が特殊 リリースを疑っても、原因はそこにな い。 突然 500 デプロイなしで 壊れる 静かに近づく 動いているうちは、誰も気づけない。 8/10
▪上限は変えられないので、結果サイズを減らす 直し方 01 直積をやめる(relationLoadStrategy) テーブルごとに別クエリで取らせる。552行 → 46行 + 軽い552行に分かれ、掛け算の構造が消える。 02
重いカラムを読まない(射影) 一覧が使うのは受付番号と回答者名だけ。必要な列だけ取ると1件 数KB → 百数十バイト。余裕が2桁変わる。 03 それでも上限との距離は残る 設問への回答は 回答件数 × 設問数 で育つ。12設問なら回答800件規模で再び当たる(概算)。 今ココ 対処 9/10
▪今日いちばん言いたいこと まとめ ローカルの緑が保証しているのは、 ローカルで動くことだけ。 この修正が効いたことは 1MB上限が無いので、修正前のコードも普通に動く。 「直った」の最終確認は 本番にデプロイした後にしかできない。PR にもその旨を明 記した。
ORM のデフォルトは、その先にどんなサービスが挟まっているかを知らない。 今ココ まとめ 10/10