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
ISUCONボツ技かるた / ISUCON Reject Karuta
Search
Hiroki Tanaka
January 18, 2020
Programming
0
63
ISUCONボツ技かるた / ISUCON Reject Karuta
Hiroki Tanaka
January 18, 2020
Tweet
Share
More Decks by Hiroki Tanaka
See All by Hiroki Tanaka
DockerCIビルドを一歩先へ Buildkitを運用前提で試食してみた / Docker ci with buildkit
dabits
0
120
U30エンジニアだからこそ実現できた劇的ビフォーアフター #bcu30
dabits
1
4.1k
Other Decks in Programming
See All in Programming
Amazon BedrockでサーバレスなAIお料理ボットを作成する!!
tosuri13
0
110
Go Code Generation at newmo / 2024-08-27 #newmo_layerx_go
genkey6
0
540
Swift Concurrencyとレースコンディション
objectiveaudio
1
400
GoのIteratorに詳しくなってしまう
inatonix
1
190
Using Livebook to build and deploy internal tools @ ElixirConf 2024
hugobarauna
0
230
dRuby 入門者によるあなたの身近にあるdRuby 入門
makicamel
4
350
いつか使える ObjectSpace / Maybe useful ObjectSpace
euglena1215
2
130
[DroidKaigi 2024] Android ViewからJetpack Composeへ 〜Jetpack Compose移行のすゝめ〜 / From Android View to Jetpack Compose: A Guide to Migration
syarihu
1
190
Appleの新しいプライバシー要件対応: ノーコードアプリ プラットフォームの実践事例
nao_randd
1
520
Mastering AsyncSequence - 使う・作る・他のデザインパターン(クロージャ、Delegate など)から移行する
treastrain
4
1.5k
TypeScriptで 負荷テストを書こう 〜k6のシングルバイナリの秘密〜
dora1998
7
3k
僕が思い描くTypeScriptの未来を勝手に先取りする
yukukotani
7
2.2k
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
26
1.9k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
326
21k
A better future with KSS
kneath
235
17k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2k
Teambox: Starting and Learning
jrom
131
8.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Why You Should Never Use an ORM
jnunemaker
PRO
53
8.9k
Designing for humans not robots
tammielis
248
25k
KATA
mclloyd
27
13k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
29
2.6k
Why Our Code Smells
bkeepers
PRO
334
56k
StorybookのUI Testing Handbookを読んだ
zakiyama
26
5k
Transcript
ISUCON ボツ技 かるた 2020/01/18 @dabits
ISUCON、ご存知ですか?
ISUCONとは • Iikanji Speed Up CONtest = ISUCON • 3人1組8時間で行うサーバサイドチューニングコ
ンテスト • LINE社が毎年主催、賞金100万円 • 問題作成は毎年持ち回り ◦ ‘19 さくらインターネット & mercari ◦ ‘18 DeNA
ISUCONの楽しさ • スコアランキングがリアルタイムに出る • 割と本当の業務に直結する改善課題が多い • 何気にチームワークが一番大事
ISUCONのボツ技とは • ISUCON本戦もしくは本番環境では絶対に使えな いチューニング手法 • 本戦前の個人練習戦で編み出したり、人から聞 いたり。。。!
年始なので 「い」「す」「こ」「ん」の かるたにして紹介します
ISUCONの「い」
いえないような パスワード 暗号強度 い 6d8bc1284964660372e0 b7f84d9053cb40b50b39 ↓ aG9nZWZ1Z2FwaXlvCg==
いえないようなパスワード暗号強度 • DBに保存するパスワードを極力簡単な暗号化方式にすること でCPUリソースを確保する技 • 問題によってはログイン試行回数が多く、SHA1など暗号化処 理でCPUを大量消費する • まぎれもなく本番環境ではそんなことしてはいけない、本戦で も場合によっては失格に
ISUCONの「す」
すべて /dev/shm す /var/lib/mysql /dev/shm
すべて/dev/shm • I/Oが発生するものをすべて/dev/shmに入れる技 • /var/lib/mysqlを/dev/shmに突っ込むと実質オンメモリに!? • スコアが低い割に再起動すると吹っ飛ぶのでボツ
ISUCONの「こ」
このデータ 整合性 ないけどいいや こ
このデータ整合性ないけどいいや • 3台のサーバを自由に使っていい問題の場合、すべてのサー バで捌く代わりにデータ同期を取らない技 • ベンチマーカーの作りが甘い場合、1セッションをすべて1サー バで捌くことがあり、ベンチがNGにならない • 本番環境を前提にした場合、LBで確実にuidごとに分岐でき ればいいが、そもDBシャーディングなどのほうが良い
ISUCONの「ん」
んんん、ここは 流入制限で sleep1 ! ん
んんん、ここは流入制限でsleep 1! • 頻繁にajaxされるページに対してsleep 1を入れることにより、 1ユーザあたりのリクエスト数を減らしてCPUリソースを確保す る技 • ISUCONではルール上JSの書き換えが禁止されているため、 ポーリングの回数を減らすためにこの手法が度々使われる
• ISUCONでは容認されるが本番環境ではそもそもポーリング の頻度をクライアントプログラム側で減らすべき
興味を持ったら 過去問題やってみましょ! https://github.com/isucon
ありがとうございました