[Groonga-commit] droonga/drnbench at 37f3752 [master] Add ability to report slow requests

Back to archive index

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����������������������������...
下載 



More information about the Groonga-commit mailing list
Back to archive index