isucon

isuconでよく使うツールをまとめてみた

昨年のisucon7に続いて、今年もisucon8の予選に参戦した kopug です。
結果は…アレですが、非常に今回も楽しまさせて頂きました。
運営の皆様本当にお疲れ様でした。そしてありがとうございました!

さて、今回はisuconでサクッと使えて、便利なツールたちをまとめてみます。

netdata

netdata

Install

$ bash <(curl -Ss https://my-netdata.io/kickstart.sh)
$ sudo systemctl start netdata

常に外部モニタで写して状況を確認できるようにしていました。System Overview みて違和感を感じたら詳細を見るみたいな。

dstat

dstat

ある程度当たりをつけて負荷計測 -> 設定 or コード変更をしているときには、netdataではなく dstatを使ってます。

Siege

$ siege -c 300 -t 10S -b -i --log=/tmp/siege.log -f ./urls.txt

Lifting the server siege...
Transactions:                    439 hits
Availability:                 100.00 %
Elapsed time:                   9.83 secs
Data transferred:              58.21 MB
Response time:                  2.05 secs
Transaction rate:              44.66 trans/sec
Throughput:                     5.92 MB/sec
Concurrency:                   91.35
Successful transactions:         446
Failed transactions:               0
Longest transaction:            6.76
Shortest transaction:           0.00

LOG FILE: /tmp/siege.log
You can disable this log file notification by editing
/home/vagrant/.siege/siege.conf and changing 'show-logfile' to false.

ab(Apache Bench)に似ていますが、これは複数URLに対して実行ができます。POSTやcookie等も渡せるので、isuconで毎回Portalのベンチマークを実行するにはちょっと待ち時間がかかるので、あたりが付いているときは、これで局所的にベンチをかけて調整をしました。

Kataribe

Apache/Nginx/H2O/Varnishncsa 等で使えるLog Profilerです。
今回はH2Oだったので、READMEに書いてあるとおりにLogFormatを変更して使いました。
Portalのベンチマークを動かしたらまずはこれで確認をする流れを作っています。

pt-query-digest

MySQL の SlowQuery をこれで発見することができます。何が嬉しいかというと slowlogを吐かなくても tcpdumpの結果から解析をすることもできるので、
一時的に見るのが手軽でいいですね

最後に

今回 isucon8は1人枠ができたので、そちらで参戦をしました。
そこで感じたメリット/デメリットを書いてみます。

  • メリット
    • 開発環境を作らなくていい
    • isuconアカウントを自分好みに使える (.vimrc .tmux .zshrc etc)
  • デメリット
    • 手が足りない。時間の刻むスピードが3倍早く感じる
    • さみしい。ただひたすら寂しい。笑
      • 思わず Alexaに話しかけてしまう