wtatsuruの技術方面のブログ

はてなスタッフ id:wtatsuru です。日常ブログはこちら https://tatsuru.hatenablog.com/

#isucon 予選で息も絶え絶えです

酒代がほしくて ISUCON3 に初参加してきました。暫定スコアは2日目5位総合11位くらいなのでたぶん決勝いけてると思います。。。
優勝賞金ドドンと100万円! 第三回 ISUCON 開催のお知らせ #isucon : ISUCON公式Blog

立ち位置的な

すごいアプリケーションエンジニア2名 (id:onishi さん id:motemen さん) と参加したので、メインの方向性は2人におまかせしてひたすら下の方のチューニングをやってました。
普通に仕事でやる分程度にはやりましたが、それ以上のドラスティックな変化が足りなかったかなと反省です。

やったこと

まずは一目見て変なところの調整から入る。

  • innodb memcache plugin とか使ったことないし知らんので memcached 使わせる。
  • 一目見てダメなクエリ対策で index 追加
  • prefork httpd, keepalive off とか意味わからんので keepalive 張らせてまともなスコアが出るように
  • Apache 最近あんまり触ってないから その間に nginx に変更。static file を返す、gzip試す、ltsv ログの準備、$connection_requests あたりの確認。
  • 真面目に my.cnf を作る。そこまで大きな工夫はしてない。普通の InnoDB チューニング。

ここまでは普段の仕事の延長な感じ。このへんから結構だましだまし。。

  • アクセス傾向分析(遅い)
  • 入れたくないけどクエリキャッシュ。
  • フォーマットした結果を DB に入れるとやっぱり重そう。
  • ゲストに varnish 入れてみる。パスごとのヒット率とか見たり。
  • 遅い部分を計測しつつ提案、user から sys に移ってきたからいろいろ悩む。

最後の方はひたすらアプリの改善を見ながらパフォーマンスとボトルネックを見ることだけやってた感じでした。

提出したAMI大丈夫かな…ちゃんと通るかな…。今から不安でしょうがないです。もう酒飲んでるから管理画面は触れないし祈るのみ。

反省

こっからは読まなくていいです

  • 予習足りなかった:前日やればいいやと思ってたけど 酔いつぶれて一日中寝てた とかそういうの。ひどかった。
  • 知らないミドルウェア大杉:varnish はだましだまし、MySQL5.6 そんなに触ってないからけっこうその場で調べたり。
  • 発想の転換:当たり前の発想しかなかった。優勝クラスの人たちに結局ダブルスコア以上つけられてしまったのは、二人にまかせて思考停止してた部分があったなーと。
  • 武器をそろえる:普段からワンライナー書いてばかりだからその場で sed awk 書きまくってたけど、ちゃんとツールにするべきだなーと思った。自分の中でのパフォーマンス解析の定番的な。
  • デプロイとか考えてなかった。そこが直列になってしまった。

結局

なんだかんだで楽しかったです。普段の仕事でここまでカリカリにチューニングすることが減ってるので、なんだか懐かしい。点数をシビアに出されるのは怖いけど、自分なんてまだまだだと痛感します。
運営もすごいなーと感動しました。こんだけちゃんとツール・環境整えるのは大変だったと思います。
決勝出られたらもっと精進したいっすね。やる気でる!!!

明日仕事……

…。

はてなで一緒に働きませんか?