ISUCON5でわからないということがわかった
このブログを最後に更新したのが、6/8
もう4ヶ月も前かぁ(遠い目
その間に転職しまして、この度「ISUCON」に参加してきました。
チーム名「ビールはホップ使ってるからサラダ」
結果として、わからないということがわかりました(ぇ
3人で参加したのに、全く何もできずに本当に申し訳なかったm(_ _ )m
気づけば長々となってしまったのでお時間ある方お付き合いください・・・
ISUCONとは
Iikanjini Speed Up Contest
Webシステムをいい感じにスピードアップさせてそのスコアを競うコンテストです。みなさんお馴染みのLINEが主催していて、優勝賞金はなんと!!
100万円!!!! (太っ腹
べ、べつにお金につられたんじゃないんだからね!!!!
参加に至った経緯
正直、転職前はROM焼きとかやってた人間なのでネットワーク系はチンプンカンプン。Linuxもド初心者という状態です。
いろいろ勉強したくて社内のISUCON部の見学に行ったら、参加することになりました。
ヽ( ´ ∇ ` )ノ ワーイ
参加するまでの準備
毎週火・木にISUCON部の活動をやってました。部に参加し始めたのが9月頭?くらいで、全く0の状態からスタートした感じDeath
部に初めて行った時にISUCONについて教えていただきました。
ひたすらにブクマをつくり続ける感じ
イイね!!
ISUCON3の予選問題やってみる
3チーム作ることになり、チーム分けどうする?となりました。協議の末、ISUCON3の予選問題やってScore順で決めることに。
予選登録が18日締め切りだったので、それまでにやることが決まりました。自分は14日に実施。
結果。。。
AWSの使い方が全くわからず、開始したはいいけどずっと画面とにらめっこして終了。
ハハハハハ!!!!
...orz
後日、部でのScore発表時に id:pe10 さんにご教授いただき、ベンチマーク動かせました。
Score 903.03
部内にScore 9,000overの方もいて単純にすごいなという印象でした。このScoreを元に以下3チームが誕生。
・ピザはバランスいい
・牛は草食ってるから野菜
・ビールはホップ使ってるからサラダ
GCP使ってみる
次にやったのがGCPを使うことです。ISUCON5はGCPで実施することが事前に分かっていたので、準備しなきゃと。
アカウントを取り、公開されていたISUCON4のgsをつかってインスタンスを起動。ベンチマークを動かしてみてScoreが出るところまでやりました。
当日の動き
頭動かすためにも甘いものが必要だよね⭐︎
てことで、ブラックサンダー3袋くらい持参していきやした。
10:00 開始時間 〜ぼっち党員〜
予選開始時刻になったがチームは自分1人。
とりあえず、やるしかねぇ!!
事前に通知されたURLにアクセス
↓
ログイン画面が表示されたのでメールに添付されたパスワードでログイン
↓
が、入れず!!
ん?
ログインパスワード:>aiZIeytbg0q
>
この記号、パスワードなんかい!!
とりあえず、指定されたgsつかってGCPにインスタンスを立ち上げました。
11:30 初めてのRequest 〜終わった感満載〜
今回ブラウザでベンチマークをRequestして実行する仕様でした。準備するのも遅いし初めてのRequestもこんな時間で、ダメダメ感が半端ない。
早速Requestしてみました。
おぉ、なんか他のと色違いで表示されとる。ぽけーっと眺めてチラっと更新っぽいのが走ったので確認。
ドンッ⭐︎
Score 68
初期実装がこんなに低いと思ってなかったのでまず驚愕。(結局、他チームの初期Scoreみるとそれぐらいだったのでミスってはなさそう)
そう!!
ここで、自分のISUCONは終わりを告げたのです(ぇ
1人でできることはコードを読むことだけ、できることを必死に探してました。
つらいお。。。
13:00 チーム2人目合流 〜ようやく動き出した感〜
これ以降の作業は主に2人目の方が中心となって実施してくださいました。打ち合わせとか全く0の状態だったので、やり方などを確認しながら進めました。準備が整った段階で、どのようなアプローチで進めるかを確認。
といっても、自分にできることがなかったので話を聞く体制を整えてました(ぇ
どんどんと進んでいく作業
・systemdで実行中なのがRubyであることを突き止め、PHPに換装
・mysqlにrootなら入れるでしょっとサクッと入ってテーブルの構成をさらっと書き出す
・コード上のクエリをEXPLAINで調査
・indexが全然貼られていないから貼る必要があること判明
ものの1時間くらいでここまでできるのが当たり前の業界にいるんだと口ポカーン状態。
15:00 チーム3人目合流 〜休憩も必要だよね〜
3人目の方が業務を終えて参戦していただけることに。GCPアカウントがなかったのでどうする、どうするとなりましたが、インスタンス上でアカウントを作成し、ssh接続に成功。
やれることやっちゃえの空気ができて、sambaも導入(ぇ
しかしながら、もはやアプリケーションをいじる時間もない...ベンチマークのページをみると積み重なるRequest
スッとRequest投げてコンビニへ(ぇ
戻ってきてScoreみると600くらいで10倍くらいにはなってました。indexすげぇ
そこからアプリ以外で高速化できる方法はないかとgoogle先生で調べる。nginxの高速化設定を見つけ、その他もいじって試してみるとScore 900くらいに。
18:00 終了時間 〜もうゴールしてもいいよね〜
終了間際
Requestを何度送ってもScoreが「0」でなんでだ、なんでだとなりました。原因がnginxのエラーだとわかり修正を試みます。
が、なぜかrootなのに編集できず。
あれよあれよと終了時間を迎えました。。。どうやらkernelをいじったことで何がしかのファイルが破損してしまった模様orz
学んだこと。
こういうことは...
ダメ、ゼッタイ。
あと、
大事、事前準備。
結果発表
「ピザはバランスいい」が堂々予選突破!!
「牛は草食ってるから野菜」も一時、Score1万に近づく好成績
いやー、マジすごい
まとめ
冒頭で述べた通り、わからないということがわかりました
井の中の蛙しかり、知らないことをどんどん吸収していかないとダメだと改めて痛感しました。
ISUCON5に出たことでいろいろとわかったのはかなり良かったです。
1年後にも是非出たい、というか出る
そのためにもチューニングする知識をどんどん得たい。
無知からの卒業。
これだ!!
当面の目標はWebアプリの高速化について
・プロファイリング(ボトルネックの抽出)
・スロークエリの改善
・ミドルウェアの調整
以上が効果的だそうなので、「ひとりでできるもん」と言えるくらいまでやります。