YUKI Hiroshi
null+****@clear*****
Thu Jul 17 11:56:21 JST 2014
YUKI Hiroshi 2014-07-17 11:56:21 +0900 (Thu, 17 Jul 2014) New Revision: 37f37529342132f7f4851959b0952e97641dc1d8 https://github.com/droonga/drnbench/commit/37f37529342132f7f4851959b0952e97641dc1d8 Message: Add ability to report slow requests Modified files: bin/drnbench-request-response lib/drnbench/request-response/configuration.rb lib/drnbench/request-response/result.rb lib/drnbench/request-response/runner.rb Modified: bin/drnbench-request-response (+4 -0) =================================================================== --- bin/drnbench-request-response 2014-07-17 11:37:53 +0900 (ce92987) +++ bin/drnbench-request-response 2014-07-17 11:56:21 +0900 (32fa8af) @@ -41,6 +41,10 @@ option_parser = OptionParser.new do |parser| "step to increase number of clients (optional)") do |step| config.step = step end + parser.on("--n-slow-requests=N", Integer, + "number of reporting slow requests (optional)") do |n_slow_requests| + config.n_slow_requests = n_slow_requests + end parser.on("--mode=MODE", String, "mode of benchmark (optional)", Modified: lib/drnbench/request-response/configuration.rb (+2 -1) =================================================================== --- lib/drnbench/request-response/configuration.rb 2014-07-17 11:37:53 +0900 (29dc31d) +++ lib/drnbench/request-response/configuration.rb 2014-07-17 11:56:21 +0900 (89c20c0) @@ -19,7 +19,7 @@ module Drnbench module RequestResponse class Configuration attr_accessor :duration, :wait, :request_patterns_file - attr_accessor :start_n_clients, :end_n_clients, :step, :n_requests + attr_accessor :start_n_clients, :end_n_clients, :step, :n_requests, :n_slow_requests attr_accessor :mode attr_accessor :default_host, :default_port, :default_path, :default_method attr_accessor :report_progressively, :output_path @@ -34,6 +34,7 @@ module Drnbench @step = 1 @n_requests = 1000 @mode = :http + @n_slow_requests = 5 @default_host = "localhost" @default_port = 80 Modified: lib/drnbench/request-response/result.rb (+21 -2) =================================================================== --- lib/drnbench/request-response/result.rb 2014-07-17 11:37:53 +0900 (85bab73) +++ lib/drnbench/request-response/result.rb 2014-07-17 11:56:21 +0900 (2c321ab) @@ -16,7 +16,7 @@ module Drnbench module RequestResponse class Result - attr_reader :n_clients, :duration, :statuses + attr_reader :n_clients, :duration, :statuses, :n_slow_queries class << self def keys @@ -34,6 +34,7 @@ module Drnbench def initialize(params) @n_clients = params[:n_clients] @duration = params[:duration] + @n_slow_queries = params[:n_slow_queries] || 5 @results = [] @total_elapsed_time = 0.0 @@ -77,6 +78,20 @@ module Drnbench @average_elapsed_time ||= @total_elapsed_time / @elapsed_times.size end + def top_slow_requests + slow_requests[0.. �� n_slow_queries-1].collect do |result| + request = result[:request] + "#{result[:elapsed_time]}msec " + + "#{request["method"]} http://#{request["host"]}:#{request["port"]}#{request["path"]}" + end + end + + def slow_requests + @results.sort do |a, b| + b[:elapsed_time] <=> a[:elapsed_time] + end + end + def to_s "Total requests: #{total_n_requests} " + "(#{queries_per_second} queries per second)\n" + @@ -87,7 +102,11 @@ module Drnbench "Elapsed time:\n" + " min: #{min_elapsed_time} sec\n" + " max: #{max_elapsed_time} sec\n" + - " average: #{average_elapsed_time} sec" + " average: #{average_elapsed_time} sec\n" + + "Top #{@n_slow_queries} slow requests:\n" + + top_slow_requests.collect do |request| + " #{request}" + end.join("\n") end def values Modified: lib/drnbench/request-response/runner.rb (+2 -1) =================================================================== --- lib/drnbench/request-response/runner.rb 2014-07-17 11:37:53 +0900 (31dfcc6) +++ lib/drnbench/request-response/runner.rb 2014-07-17 11:56:21 +0900 (df4f5bc) @@ -37,7 +37,8 @@ module Drnbench def process_requests requests_queue = Queue.new @result = Result.new(:n_clients => @n_clients, - :duration => @config.duration) + :duration => @config.duration, + :n_slow_requests => @config.n_slow_requests) client_params = { :requests => requests_queue, -------------- next part -------------- HTML����������������������������... 下載