ISUCON8予選に参加しました
ISUCON8に参加しました。参加は今年で3年連続3回目です。
ちなみに体調は最悪で、風邪を引いていたのもあり声がほとんど出ませんでした。チームメンバーの皆様にはご迷惑をかけてしまった。
結果は今年も予選落ちでした。うーん残念。着実に良くなっている感じはあるものの、次こそは予選突破したいなあ。
メンバー
実は毎年参加するチームが変わっています。今年は、Takuan-Oishiiさんと、hommahさんとのチームでした。
会社の同僚と、高専の同期というやや異色なチームでしたが、共通の知り合いである僕の心配をよそに、持ち前のコミュ力で普通に打ち解けてました。すげえな。
事前準備
キックオフの飲み会も含めて、合計3回ほど集まって練習しました。
基本はisucon7の感想戦を題材に、「どういう手順で何を調べたら我々はこのボトルネックに気づいて対処できたか」みたいなことを中心に考えました。なので、「ここまでこうやって設定している間に、誰がどういう風にレギュレーション理解しているといいのかな」とか「こういう手順でログを見たら、例えばここがおかしそうっていうことに気がつけるんじゃないかな」とか当日でも行動が再現できるレベルになるようにいろいろ考えられたことはすごく良かったように思いました。まあ予選落ちしたんだけど。
個人的には「当日の我々の知能レベルでは〜」のようなチーム内に独自の語彙というか言い回しが発生したのが面白かったです。よくあることだと思うんですが、チーム内に独自の共通言語が生まれるって、チームとしては割といい兆候な感じしませんか?しますよね?
事前練習までは、 1. 誰かがSSH鍵を配置して初期の設定完了させましょう 2. その間に残りの2人がレギュレーションとアプリをみてどんなものかを理解しましょう 3. その後、最初に手を付けるべきボトルネック2つぐらい出したら早速それに取り掛かることにしましょう
という感じのことを決めました。
あとは各々、手元のスクリプトをメンテしたり、僕はすばやく環境流し込んだり設定変更できるようにansibleのスクリプトを書いたりしていました。
当日
基本的には自分がやったこととか、関わったことしか覚えてないのでそれぐらいしか書きません。
当日は、事前準備で話していた1,2,3がそれぞれうまく実行できて、順調な滑り出しに見えました。
ただ、nginxしか頭になかった状態でのまさかのh2oで、どぎまぎしながらも設定ファイルをいろいろ変えてalpが使えるように変更した上で改善に取り組みました。alpに結構頼るつもりだったので、肝が冷えました。
終了後の感想チャットで「すぐnginxに変えた」っていうのを見て、確かにその手もあったなって思いましたw意外と焦っているもんだ。
最初は結構無駄なクエリ多いね、っていう話になってクエリを削る方向に行くかと思いきや、インデックス効いてないところを細々直したりしてました。今振り返るとあんまり筋がいいことしてないなあ。あとは、最初は1台構成だったものを2台に変えたり。
そんな感じで、今思えばほそぼそとした改善しかしておらず、初期スコアから全然変わらず。
最後の最後に、イベント取得のクエリがループ使っていて激重だったので、いい感じにチューニングしたら最後に1万ぐらいいきました。その時のチューニング結果のコミットというか動作確認の手順をミスって、泣きの1回ベンチの機会を失ってしまったのは素直に申し訳ないという気持ちでいっぱい。
あと、ちょくちょくペアで作業したりできていたのは個人的には楽しかったなあ。完全分業っていうのもISUCON的には戦略としてありだと思うけど、個人的にはワイワイやるのがやっぱり好きです。
感想
相変わらずISUCONはおもしれえなあっていう気持ちでいっぱいです。終わるたびに「はぁ〜」ってなるんですけど。
事前に色々考えたとしても、やっぱり当日は一歩及ばないっていうのを何度も繰り返している気がしていて、エンジニアとしてもまだまだだなあと思います。精進が必要だ。
あと、過去参加した中で一番ポータルサイトがリッチで声が出ました。嘘です。当日僕が声出ませんでした。でもびっくりしたのは本当です。 あんなに大変なイベントの運営をしてくださっているスタッフのみなさま、本当にありがとうございました。来年こそは予選を突破したい!