ISUCON10予選に参加した

IISUCON10の予選に参加しました。

ISUCONとは

いい感じスピードアップコンテスト。 webサービスが与えられるので頑張って高速化します。 詳しくは公式サイトを読んでください。

isucon.net

今年のテーマはSUUMO風サイト。

チーム

ISUCON8,9参加時と同じチーム。

役割分担は、@nonamea774がインフラ担当、@_primenumberがアプリを見る担当でした。

会場

今回は2拠点体制だったので、 競技時間中はSlackのプライベートチャンネルと通話機能で情報共有を行いました。

レポジトリ

今回からgoを使いました。

github.com

gitレポジトリは各自の手元マシンのみに持っていました。

Makefile にデプロイ用コマンドを記述し、 'make deploy-zenbu' で本番サーバに適用する、という運用をしていました。 scpでファイルコピー、sshで本番サーバ上のコマンド実行をする温かみのある運用です。

やったこと

GitHubのコミット記録から書き起こしました。 なお、コンテスト時間は12:20~21:00でした。

12:00~

17:00~

  • SQLにインデックス追加
  • color, kindの種類が固定なのでSQLをintで保持する(searchの高速化目的)

19:00~

  • searchで扉の大きさでselectする条件の改善 commit

やれなかったこと/思いつかなかったこと

  • 複数台構成にする
  • DBをchairとestateで分けて2台構成にする(JOINしていないので分けて問題ない。これがクリティカルに効くらしい)
  • goのLoggerをとめる

結果

最終1195点(最高点1401点)で予選落ちでした。

感想

  • /etc以下のファイル管理、ansibleでデプロイ、makefileでデプロイ、etckeeperで管理等いろいろやり方があるらしい(感想戦より)
  • user_agentはnginxで弾けるんだなあ
  • 今回の問題はどこを改善していいのかよくわからない…とずっと言っていた
  • 何も変更していないのにベンチマークが通ったり通らなかったりして困惑(csv入稿が遅かった)
  • チームメンバーの二人には何から何までお世話になりました。今年もありがとうございました。
  • 運営の皆様、ありがとうございました。