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
めぐろLT#6 怖い話 サーバーが次々死んでいく
Search
kiyoshi yamashita
August 31, 2023
Programming
230
0
Share
めぐろLT#6 怖い話 サーバーが次々死んでいく
めぐろLTでの登壇資料
https://meguro-lt.connpass.com/event/288484/
kiyoshi yamashita
August 31, 2023
More Decks by kiyoshi yamashita
See All by kiyoshi yamashita
ユニットテスト環境改善/improve-unit-test-environment
ky6yk
0
460
画像のバリデーションはファイルサイズチェックだけでいいと思ってない?
ky6yk
0
550
ES2021/2022
ky6yk
0
55
Other Decks in Programming
See All in Programming
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
270
Modding RubyKaigi for Myself
yui_knk
0
870
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
530
OSもどきOS
arkw
0
400
ふつうのFeature Flag実践入門
irof
7
3.5k
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.8k
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.5k
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
420
Spec-Driven Development with AI-Agents: From High-Level Requirements to Working Software
antonarhipov
2
440
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
330
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.1k
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
560
Featured
See All Featured
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
170
Crafting Experiences
bethany
1
160
The SEO identity crisis: Don't let AI make you average
varn
0
480
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
200
We Have a Design System, Now What?
morganepeng
55
8.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
180
Mind Mapping
helmedeiros
PRO
1
230
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
How to Ace a Technical Interview
jacobian
281
24k
Transcript
サーバーが次々死んでいく... 株式会社ラクーンHD yamashita.kiyoshi
まずは自己紹介 名前:山下 清史 所属:株式会社ラクーンホールディングス 技術戦略部 開発チーム 主な仕事:BtoB卸売りサイト スーパーデリバリーの開発
APサーバーをDocker化した - 今までのサーバーのセットアップは手作業でやっていた - Dockerfileにサーバーの設定をかける - 開発環境構築が楽になった - ログフォーマットをjsonにした -
ログを標準出力に出すようにした - サーバにsshしてログファイルを確認しなくてよくなった - fluentd -> Elasticsesarch -> kibanaでログを確認できる
進め方 - Dockerfileなどを作成する - ログをモダンにする - 不要なログを削除し、標準出力に出す - セキュリティ対策 -
機密情報をDockerfileに書かないようにした - ひたすらテスト 俺、このプロジェクトが終わったら長期休暇を取って海外旅行へ行くんだ... APサーバーをDocker化した
開発は上手くいった そして本番稼働して、初めの1、2日は上手く動いていた APサーバーをDocker化した
サーバーが死んでいく いきなりサーバーが死んでサービスサイトに繋がらなくなった アクセスログは全て500 会員が商品を購入できなくなった
サーバーが死んでいく 大量の同時アクセスが来ていたようだ…
一時的な高負荷によりメモリが足りなくなった? →メモリ割り当てを増やした 負荷テストが足りなかったなぁ~ 考えられる原因
メモリを2倍割り当てたはずなのにサーバーがまた死んだ... 対策した結果
パフォーマンス劣化のたびに対処療法(メモリ割り当てを増やす)を行った しかし、ついにアクセスが少ないときにサーバーが死んだ… 一時的な高負荷が問題じゃなかった… それでもまた…
計測 現在のアプリケーションサーバーにおいてヒープ領域の使用状況を確認すると 異常にメモリを使っているクラスが見つかった... そのクラスを確認したら
進め方 - Dockerfileなどを作成する - ログをモダンにする - 不要なログを削除し、標準出力に出す - セキュリティ対策 -
機密情報をDockerfileに書かないようにした - ひたすらテスト このプロジェクトが終わったら長期休暇を取って海外旅行へ行くんだ・・・ APサーバーをDocker化した
原因 不要なログ削除時の対応がミスっていたことが発覚した 対応ミスしたログの動作 - ログ出力前に、スレッド変数内にデータをためる - ログ出力後にデータをクリアする データをためるところを消さずにデータをクリアするコードのみを消していた
→メモリリーク発生
原因 gitでコミットした人を見ると...私でした
まとめ - 推測するな、計測せよ!! - メモリリークは気付きづらくて怖い - 解決までに時間がかかってしまった