先週の社内勉強会では@tagomorisさんにお越しいただき、ISUCON5で使われたベンチマークツールについてお話しいただきました。
資料も公開していただいています。
www.slideshare.net
- アプリケーション以上に負荷をかけきるための性能
- アプリケーションの処理結果を検証するための機能
という相反する2つの要件を同居させる必要があるため、既存のベンチマークツールやテストツールを利用できないため毎回スクラッチで開発されているそうです。
今回はhttp_loadを使おうと思っていたけど、一週間前にhttp_loadではセッションが扱えないことに気づいてJavaでjetty-clientやJackson、Jsoupなどを使ってスクラッチしたとのこと*1。実際のコードを見せていただいたのですが、フレームワーク的な感じになっていてある程度汎用的な使い方ができそうです。このベンチマークツールは今後単独のツールとして公開されるそうです。
また、多数の参加チームに対して同時にベンチマークツールを提供するためにMySQLをキューにしてベンチマーク要求をキューイングし、MySQLにメッセージを取りに行ってベンチマークツールをキックするワーカーのイメージを用意しておくことでワーカーのインスタンスを起動するだけでスケールアウトできる仕組みを作ったそうです。簡単な仕組みですが、処理は重いけどメッセージの流量はそれほどでもないというようなケースであればこういったやり方がシンプルでよさそうだなと思いました。
実際にISUCONの準備に携わられていたからこそお聞きできる内容で非常に面白かったです。@tagomorisさんありがとうございました!