takedajs ログ

備考録

ISUCON6の予選に参加しました

ISUCONに初参加し、今回の感想を備考録として書きました。
技術的な話は書いていません。

毎年開催されていて自分も参加したいと思っていたので、毎週技術週報を送り合ってる@enomotodev@suga-tech3とp-teamというチーム名で初参加しました。

結果は、予選敗退でした。

利用言語:PHP
MAXスコア:14652
場所: 会社の会議室

LINEカフェの申し込みをし忘れたため、会社の会議室を借りました。 結果的には周りに人がいない会議室の方が集中できたと思うので良かったです。

開催前

8:30 - 9:00
デスクトップ、机、椅子など準備

9:00 - 9:30
Bitbucketを導入
(@enomotodevが事前にAzureの設定をやってくれました。)

9:30 - 10:00
だらだら

開催中

午前中

10:00 - 11:30
・Azureへ接続
・なぜかPHPが動かなかったので、動くように設定
・コードなどを見て、施策を出してスプレットシートにまとめる

11:30 - 12:30
・マクドナルドを食べながら、午前の進捗共有
・午前でのベストスコアは4332

午後

12:30 - 16:00
・午前中に考えた施策を実施。
 インフラなどメインで行ったが、ほとんど効果がでませんでした。
 あと、MySQLにインデックスを貼ったんですが、これも思ったより効果なかったです。

16:00 - 17:55
・entryテーブルをSELECTしているsqlをチューニングしたら、4000→14620に数値が跳ね上がってビビる。あ、チューニングすべきところはここだったね、と気づく。
・starの取得方法を変更

17:55 - 18:00
・最後のベンチマークを計測し、終了。
・後輩が買ってきてくれたカップ焼きそばの準備
(ニコニコ超会議でドワンゴのエンジニアが焼きそばを焼いてる記事に影響を受けて、買ってきたみたいです笑)←違ったみたいです笑

開催後

18:00 - 18:30
・カップ焼きそばを食べながら振り返り。

18:30 - 19:00
・片付け
・解散

振り返り

  • サーバーやMySQLのチューニングに時間を割きすぎた
    サーバーの設定弄ればドカンと早くなるんでしょ?と余裕ぶっこき過ぎました。もっと、コードをもっとよめば良かったです。午前中にコードをざっと読んだときに、character_lengthらへんの処理を見て、ここ怪しいなとは思ったのですが、対応が終了間際になってしまいました。

  • モニタリングツールを導入した方が良かった
    遅い箇所を視覚的に常に見えるようにしとくべきだった。コードを読めばどこを修正すべきかは分かるのですが、モニタリングツールを導入することで、効率的に施策を考えられ、優先順位をつけて実装できたんじゃないかなと思います。知り合いは、NewRelicを使ってたみたいです。
    ISUCON6 オンライン予選に出て惨敗してきました。 - 日頃の行い

  • インフラの知識が足りない
    3人ともアプリケーションエンジニアだったため、インフラの設定や施策出しに課題がありました。 基礎的なところや、これだけはやっとけみたいなものを覚えておくだけでも違うと思うので、次回までには身につけておきたいです。

まとめ

業界でもトップのエンジニアの方と同じ問題を解く経験は、とても良い刺激になりました。
来年こそは決勝に行きたいので、普段の業務でも更にパフォーマンスを意識して開発を行い、レベルアップして次回も挑戦したいです!
運営の皆様、良い機会を作ってくださりありがとうございました!