肉汁爆弾

いろいろメモっていきます

【カレーおじさん】ISUCON13ふりかえり

こんにちは、1年ぶりのブログになっちゃいましたが元気にやっています。
今年もISUCONの時期になり、例年通りチーム「カレーおじさん」としてtatsumackとlazydgの3名で参加してきました。
今回は予選・本選が分かれておらず、全員がその1日で試合をするという形式だったのですが、結果としてはギリ100位以内ぐらいの順位でした。
isucon.net

これは予選があったとしたら落ちてたなーという結果ですね。参加者も増えてレベルが上がっている感もありますが、精進せねばという気持ちです、、
しかし、本当にChatGPT先生やGithubCopilotに教えてもらって(たまに騙されて)普段それほど書いていないGoや、触ったこともなかったPowerDNSの設定方法などをクイックに知ることができて、とりまく環境の進化を感じます。ひしひし。
参加チームが過去最大の694組とのことで、このチーム数のベンチをさばいて、トラブルにも粛々と対応し、今年からはなんと当日結果発表までやってのける運営は本当にすごいです。いつもながら運営が一番ISUCONしてる。いつもありがとうございます。
isucon.net

当日の流れ

やったことの備忘録的に、当日やってたことと考えたことについてメモしておきます。担当はいつも通り以下のように割り振ってました。

  • sugaret(わたし): インフラ
  • tatsumack:App1
  • tatsumack:App2

github.com

開始してすぐいつも通りの作業。このあたりは直前週に素振りをやったのだが、やってよかった。めちゃくちゃ忘れてた。
  • deployのスクリプトの準備
  • MySQLのslow queryの設定、pt-query-digestの準備
  • nginxのログ形式の修正、alpの準備
  • Slackcatの準備、、と行きたかったが更新止まっているようだったのでワンライナーを用意
インデックスがとにかく貼ってなかったのでインデックス貼る作業
  • アプリケーションだけではなく、PowerDNSで利用されているDB側もslow queryの上位にいたので対応してた
AppとDBを分離する作業
  • PowerDNSの挙動があんまりピンと来ておらず、App側のDBのみ分離
  • サーバ1:App+DB(DNS)サーバ2:DB(Appで利用するもの)という形
  • 負荷レベル的にDNSサーバーをサーバー3にするのが良さそうだったが、うまく設定できず、、
その他、App担当している二人はN+1の対応を主にやっていたはず
このブログを14:30ぐらいに見つけていて「まさにこれじゃん」となったりしていた
  • 設定値の詳細を理解して対応するのに難儀する
  • 最終的にAppとDNSサーバー分離にチャレンジするが、時間切れで終了

knowledge.sakura.ad.jp

おわりに

今年は事業ドメイン的にもどういうサービスなのか非常にわかりやすく、こういうサービスだとベンチマーカーはこう動くよな?も想像しやすくて、戦いやすかったように思います。かなり良問だったのではないかなと。
なので「こういうことやればスコア上がるだろうな」という案はある状態で競技時間が終了しており、知識だけでなく実装のスピードや正確さが足りなかったなーという印象でした。
サーバー3台あるのに3台活かしきれなかったらそりゃスコア上がりきらないよなー、DNSサーバーとか自分で書いたことある人だとやっぱ強いよなーと。。
自分の知識が足りていなかったところぐらいは復習して、いつ水責めされても大丈夫なようにがんばります。。



あ、あと年末に赤子が生まれる予定でして、来年頭から半年ほど育休を取ります。
子育ての先輩のみなさま、困ったときは何卒お知恵をお貸しくださいませ!