feature image

2022年7月24日 | ブログ記事

【皇族が教える】いちばんやさしいISUCON12予選の教本

ルルーシュA

ISUCON12の本選に出たい。インフラが得意。

ルルーシュB

ISUCON12の本選に出たい。何でもできる。

ルルーシュC

ISUCON12の本選に出たい。コードが書ける。モットーは 「Don't think, feel.」

※ この記事は99%のユーモアと1%の技術でできています。

deploy.sh が 生まれた 日

前日、夜 10:00。

その 名 は SQLite

「来たか、この日が。コードネームansibleを実行する。」

グオオオン(ansibleが走る音)

「まずはドキュメントとコードを読むか。」

var (
	// 正しいテナント名の正規表現
	tenantNameRegexp = regexp.MustCompile(`^[a-z][a-z0-9-]{0,61}[a-z0-9]$`)

	adminDB *sqlx.DB

	sqliteDriverName = "sqlite3"
)

sqlite3...?何だこれは。」

「噂には聞いているが、我らがMySQLには敵わんだろう。移行作業を予定しておけ。」

奪われた deploy.sh

シュゥゥゥン(ansibleの実行が終わった音)

「後は、細かな設定と設定ファイルの収集だけだ。すぐに終わる。」

...

「後は、細かな設定と設定ファイルの収集だけだ。すぐに終わる。」

...

「後は、細かな設定と設定ファイルの収集だけだ。すぐに終わる。」

「最初のベンチマークは無事成功しているようだ。そろそろ、計測の時間だな。首尾はどうだ?」

「後は、細かな設定と設定ファイルの収集だけだ。すぐに終わる。」

「どうした?さっきから同じことを言っているぞ。」

「...deploy.shが動かないんだ。大丈夫だ。すぐ行く。先にできることをやっておいてくれ。」

(WebUIポチポチ。このページ、重すぎぃ!!!)「俺の直感が/api/player/player/:playerIDを改善しろと告げている。」
PR#4

「それなら俺はSQLiteからMySQLへの移行を進めるとしよう。」

deploy.sh&DB移行作業 攻防戦

「「ぐぬぬ...」」

「さっきのN+1は改善したが、DBを移行中か。動くかわからんがとりあえず次の作戦に進もう。」

indexはあるだけ困らんからな。適当に貼っておくか。」

ALTER TABLE `visit_history` ADD INDEX `tenant_id_competition_id_idx` (`tenant_id`, `competition_id`);

「6sのクエリが0.1s未満になったぞ。我が軍の勝利だ。」

「「ぐぬぬ...」」

「まだ計測も実行もできなさそうだな。適当にいくつかN+1を直しておくか。」

 「competitionScoreHandlerをbulk insertにしたぞ。一瞬で終わってしまった...。」
PR#6

competitionRankingHandlerは、もう少し噛みごたえがありそうだな。」
PR#9

「ぐぬぬ...。これを見てくれないか、ルルーシュB。」

「...ファイルの一覧をfindしてforで回す部分、ダブルクオートだと改行が無視されるみたいだな。バッククオートにしておいたぞ。」

(そっか...。)「よし、メトリクスが取れるようになったぞ。」

「...よし。俺もそろそろ今までの変更を試してみたい。」

「そうだな。ルルーシュBが移行作業に時間を使っているのも非効率だ。移行途中の1台目は私が引き継ぐから、2台目で計測と改善を進めてくれ。」

崩落 の mysql.service

[ERROR] Error in accept: Bad file descriptor

何もしていないのに、 MySQLが応答しなくなったぞ。」

(なんもわからん)

..................................どうしよ。 15:30。 ほぼ初期スコア。 何も動かず。

「Cloudformationの実行からやり直したほうが良いのかもしれない。」

「「..そう...だな。」」

シーズン1終了

スコア が 目覚める 日

「お、全部マージして動かしたら点数が伸びたぞ。」

「15,000点。悪くない。悪くないな。」

「ぐぬぬ...。」

百万 の キセキ

「SQLiteにindexがつけられるみたいだな。」

CREATE INDEX player_score_player_id_idx on player_score(player_id);
CREATE INDEX player_score_competition_id_idx on player_score(competition_id);
CREATE INDEX competition_tenant_id_created_at_idx on competition(tenant_id, created_at);

PR#10
PR#12

tenantsBillingHandlerにはLimitをつけても良さそうだな。」
PR#14

「これも100件の取得で事足りそうだ。」
PR#15
PR#18

「ぐぬぬ...。移行は諦めよう。」

「プレイヤーの作成はbulk insertに出来そうだな。」
PR#17

ラブ アタック !

「適当にキャッシュを書いたぞ。」

「動いてないぞ。」

「修正しておいたぞ。」

「修正されてないぞ。」

「...そろそろ18時だ!撤収の準備をしろ!!」

土 の 味

「...」

「...」

「...」

「「「...」」」

「おやすみ。」

「「おつ。」」

Re;

~fin~

temma icon
この記事を書いた人
temma

19B 生命理工学院生命理工学系

ryoha icon
この記事を書いた人
ryoha

美少女ゲームをするためだけに生まれてきた真の戦士です。夢は「グガガガガガ...コレガ....アイ..」ってなることです。

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2021年9月21日
ISUCON11 traP CM制作についての小話
dan_dan icon dan_dan
2022年7月24日
ISUCON12に向けてダッシュボードを自作してログを可視化しました
Ras icon Ras
2019年12月17日
部内ISUCONを開催しました
xecua icon xecua
2022年7月25日
ISUCON12予選に参加して完敗しました(mazrean)
mazrean icon mazrean
2021年8月27日
学生枠でISUCON11予選を突破しました
mazrean icon mazrean
2021年8月25日
ISUCON11予選に参加してきました!
anko icon anko
記事一覧 タグ一覧 Google アナリティクスについて