いわゆるWEBサイトのベンチマークはApache Benchがいちばん有名だが、いかんせんインストールしてやらなきゃいけなくて面倒
Rubyでサクッと負荷テストしてみたかったので作ってみた
環境
- ruby 2.x
- rest-clientを使ってる
コード
10並列で計1000リクエスト実行したい場合
require 'thread' require "rest-client" locks = Queue.new 10.times { locks.push :lock } error_count = 0 Array.new(1000) do |i| Thread.new do lock = locks.pop print "#{i} " options = { method: :get, url: "http://example.com/", timeout: 2 } begin RestClient::Request.execute(options) rescue => e error_count += 1 end locks.push lock end end.each(&:join) puts puts "ERROR_COUNT: #{error_count}"
これをtime bundle exec ruby bench.rb
とかで実行すると、時間計測とエラー落ちの数を調べることができる