キュアセブン技術ブログ

考えたこと,学んだことを書きます

ISUCON10予選突破しました🎉

ISUCON10予選突破しました

チーム「牡蠣の鋭利な殻が指に突き刺さり利き手を負傷」として出場し、2419点で予選通過しました!!!!!

ISUCON10 予選結果と本選出場者決定のお知らせ : ISUCON公式Blog

f:id:shiningcureseven:20201002233153j:plain  

メンバー

  • pinkmohikan
    • リーダー・アプリケーション
  • ワイ
    • アプリケーション
  • masami
    • インフラ

OystersのISUCON出場希望者がいい感じにチームわけされてこの3人でやることになりました。
普段から交流のあるメンバーだったのでコミュニケーションには困りませんでした。

当日までやったこと

いっぱいやったので後日別エントリにまとめます
予選までで12回練習した.

当日やったこと

見れないと思うけどissueのリンク

https://github.com/pinkumohikan/isucon10/issues/1

始まるまで

今回12:20スタートとかなり遅れての開始になった。

  • 朝ごはん食べた
  • ローカルにソースコード落としてきた
  • sshの確認した
  • レギュレーション読んでた

マニュアル読んだ

よく読んだ。 今回踏み台サーバがあってポートフォワーディングするのにちょっと手間取った

ssh接続試した

サーバのうち1つがログインできなかったので運営に問い合わせてる時間マニュアル読んだりできることしてた。

アプリケーション触った

仕様をまとめてissueに貼った

ソースコード落としてきた

ssh接続できたのでソースコードを落としてきた

施策①:動的プレースホルダに切り替えた

脳死タスクの1つ。
mysqlが張り付いていたので動的プレースホルダに切り替えることでmysqlの負荷下げた。sqlインジェクション対策は無視!

db見た

ssh接続できたのでアクセスしてdbどうなってるか見てissueにまとめた

  • テーブル一覧
  • カラム一覧
  • テーブルごとのレコードの件数

スロークエリログの調査した

ログ出してもらうことはmasamiさんにやってもらって

  • どこがN+1になってそうか
  • どのクエリが重いか

を調査。

施策②:INDEX貼った

上の調査結果を元にINDEXを貼った
複合インデックスにした。
あとでソースコード見ながらこれも貼れるじゃん〜で随時追加して行った感じ

オンメモリにする

kataribeを見ながら重いエンドポイントを洗い出して、上から調査しながら進めた。
nazotteのN+1はやばげな雰囲気を醸し出していたのでさわれなかった。 安い椅子20件をメモリに持つ,検索条件をキーにした検索結果をメモリにもつことをやろうと2つプルリク作ったけどなんかベンチ通らなかった.
メンバー2人にプルリク見てもらったけどあってそうだね,でも通らないね.とのことでスキップすることに・・
エラー文言も : だけでなんもヒントにならなかったので手がつけられなかった.
ここからはpt-query-digestの調査をやったり他に改修できることがないか見ながらちょっとやってみて無理だ〜を繰り返した

黙ってた

その辺からベンチマーカーが0から動かなくなっていて焦りの議論が白熱する中,無知な私はなんの貢献もできず黙ってた・・反省

再起動試験しようって言った・計測ツールはずそうって言った

最後の3時間0点でfailの状況は変わらぬまま,とりあえず賭けとなるnazotteの施策を入れた後,再起動試験したり計測ツール外したり,最後のTODOをこなす催促をしただけのひと.

感想

出場2回目の目標は「得点アップにちょっとでも関与すること」でした.去年は右も左もわからず出場し,コードを全くいじることができず終了してしまったので.
今回はチームメンバーと一緒にほぼ毎週練習し,個人的には数百点の貢献だけだったけど確実に成長したなと実感できていい感じでした.
本戦に出られたのはチームメンバーのpinkumohikanさんとmsmさんのパワーです.

本戦にむけて

明日の本戦は楽しみたいです!!!!!!!!!!おやすみ!

牡蠣の鋭利な殻が指に突き刺さり利き手を負傷チーム
がんばれ!!!
#わたしのisucon推しチーム #isucon 

これをツイートするとISUCONグッズが当たるらしい〜応援してね