ISUCON9 本選に @hilotter、@Konboi と流れ弾で参加して9位でした。
運営の皆様、ありがとうございました。今年もとても楽しかったです。お弁当や懇親会もありがとうございました。

チームメンバーのブログ

下準備

以下に取り組みました。

  • deploy script の調整
  • Chef の CentOS 7 対応
    • Ubuntu 18.04 の微修正
    • 両方で MySQL 5.7 / MariaDB から MySQL 8.0 へアップグレードする方法の検証
  • alp v1.0.2 release
    • Markdown, CSV 形式での出力に対応
    • 準備とは関係ないですが、imbsky さんが Homebrew に alp を使いする PR を送ってくださったので、brew install alp でインストールできるようになりました、ありがとうございます
  • https://github.com/tkuchiki/watchcathttps://github.com/tkuchiki/ghc でアクセスログや slowlog の集計結果を自動で GitHub の issue にコメントできるようにしました
  • memcached 1.5.18 で使えるようになった warm cache restart の検証
  • 秘伝のタレ作成
  • nginx + memcached, Openresty + Redis を使った static file の配信方法の検証
  • Go の http.RoundTriper を使って、外部 API を叩いている部分を curl コマンドとして吐き出すライブラリの作成
  • nginx の gzip_static の素振り
  • Makefile でだいたいの作業を行えるようにする

やったこと

  • deploy script の調整
    • 下準備を十分に行った結果、10分くらいで完了
  • MySQL を docker-compose から剥がす
    • 事前検証した手順と設定ファイルにミスがあり、13時前までかかってしまう
  • アプリケーションを複数台構成にする
    • docker-compose に環境変数で MySQL がいるサーバの IP を渡すようにする
    • よい感じにローカルとサーバ上の設定を共有できなかったので、docker-compose の設定ファイルをローカルとサーバで分ける
    • .env もローカルとサーバで分ける
    • nginx の設定
      • プロキシするときに keepalive
  • ログの集計結果を自動で GitHub issue にコメントするツールの設定
  • SQL 直せそうなところを探す
  • /api/train/reserve を、メンバー 2人と一緒に見る
  • ベンチマーカーがどういうリクエストを送ってきているかヘッダとボディを出力して確認
  • 再起動試験(1時間半前には完了)
  • @hilotter に Ruby のコードベースで直してもらったところを Go のコードにバックポート
    • 時間が足りず、merge しませんでした

やらかしたこと

  • MySQL サーバの構築に手間どる
    • 過度なパラメータチューニングをした秘伝のタレが原因でうまく起動できない
    • max_allowed_packet の値を Chef で総メモリ量から算出している部分をミスって、想定した値の 1 / 1000 にしてしまい、初期データの投入ができなくなる

まとめ

予選と比べるとやらかしたことは減りましたが、一つのやらかしがひどすぎてまたもや足を引っ張ってしまいました。これをスムーズにできれば index を貼るのを私がやったり、もっと早い段階でSQLの改善に参加できたので本当に申し訳ないです。次回があればまた懲りずにチームを組んでもらえるように精進したいと思います。

運営の皆様、いつも楽しいイベントを開催していただきありがとうございます。次回もあれば絶対に参加したいです。