今年の恥は今年のうちに
大分遅くなりましたが、isucon負けてきました。
http://isucon.net/archives/41187491.html
KLab大阪のメンバーとTeam Ku'sとして参戦しました。
とにかく悔しくてしゃーなくて、振り返るのすら嫌な状態でしたw
出題者側にやられた感じでした。
今はwebにしろアプリにしろapi全盛期で、サーバエンジニアはキャッシュなんて概念無いっすよ。
来年リベンジしたいので、今のうちに振り返っておきたいと思います。
予選
キャッシュとの戦いでした。
というか最初からキャッシュに乗ってました。
なのでウォームアップでメモリに載っけてしまって勝負かけました。
後はパスワードを何かして重そうな処理を外しました。
覚えてない。。
本戦
コードはメンバーに任せてインフラをやってました。
•全てをgitの管理配下に
•全てのサービスをsupervisorに
一箇所にconfigを纏めてgit管理できるように
•計測はmackrelを入れる
mackrelは60秒間隔でしか計測できず、60秒でベンチを取るisuconには向いてなかったorz
dstatばっかり見てた。素直にmuninにしておけばよかったです。改善されるらしいので期待
•デプロイとかインフラ構築はfablic
スピード勝負なので冪等性は無視
一部を抜粋しておきます
alias isucon_deploy='fab -u isucon -i ~/.ssh/id_rsa -A -H 0.0.0.2, 0.0.0.3, 0.0.0.4 deploy'
# -*- coding: utf-8 -*-
from fabric.api import run, sudo, cd, put
def screen_install():
sudo('yum install screen')
def supervisord_restart():
sudo('service supervisord restart')
def update_phpini():
sudo('rm /home/isucon/.local/php/etc/php.ini')
sudo('ln -s /home/isucon/config/php.ini /home/isucon/.local/php/etc/php.ini')
def deploy_init():
with cd('/home/isucon'):
run('git clone git@github.jp.klab.com:kitahara-k/isucon4.git')
run('cp -r /home/isucon/isucon4/.git /home/isucon')
run('cp /home/isucon/isucon4/.gitignore /home/isucon')
run('git reset --hard')
run('rm -rf isucon4')
def deploy():
with cd('/home/isucon'):
run('git reset --hard')
run('git pull origin master')
•後はipv4のパラメータいじったり、filesystemのパラメータとかnginxの設定いじったり
来年こそは優勝狙います