[Groonga-commit] droonga/fluent-plugin-droonga at 791ed6e [master] job pusher: log queue statistics

Back to archive index

Kouhei Sutou null+****@clear*****
Sun Mar 23 22:03:56 JST 2014


Kouhei Sutou	2014-03-23 22:03:56 +0900 (Sun, 23 Mar 2014)

  New Revision: 791ed6ec57247237545540c9ac1ed6f9df5e3de8
  https://github.com/droonga/fluent-plugin-droonga/commit/791ed6ec57247237545540c9ac1ed6f9df5e3de8

  Message:
    job pusher: log queue statistics

  Modified files:
    lib/droonga/job_pusher.rb

  Modified: lib/droonga/job_pusher.rb (+33 -0)
===================================================================
--- lib/droonga/job_pusher.rb    2014-03-23 20:43:18 +0900 (8a9e4a2)
+++ lib/droonga/job_pusher.rb    2014-03-23 22:03:56 +0900 (23e733b)
@@ -62,11 +62,15 @@ module Droonga
     end
 
     class JobQueue
+      include Loggable
+
       def initialize(loop)
         @loop = loop
         @buffers = []
         @ready_workers = []
         @workers = []
+        @many_jobs_report_interval = 100
+        update_many_jobs_threshold
       end
 
       def close
@@ -77,6 +81,7 @@ module Droonga
 
       def add_worker(worker)
         @workers << worker
+        update_many_jobs_threshold
         worker.on_ready = lambda do |ready_worker|
           supply_job(ready_worker)
         end
@@ -86,6 +91,7 @@ module Droonga
         job = message.to_msgpack
         if @ready_workers.empty?
           @buffers << job
+          report_statistics_on_push
         else
           worker = @ready_workers.shift
           if****@buffe*****?
@@ -103,8 +109,35 @@ module Droonga
           @ready_workers << worker
         else
           worker.write(@buffers.shift)
+          report_statistics_on_pull
+        end
+      end
+
+      def update_many_jobs_threshold
+        @many_jobs_threshold =****@worke***** * 100
+      end
+
+      def report_statistics_on_push
+        if****@buffe***** > @many_jobs_threshold
+          if (@buffers.size % @many_jobs_report_interval).zero?
+            logger.warn("push: many jobs in queue: #{@buffers.size}")
+          end
         end
       end
+
+      def report_statistics_on_pull
+        if****@buffe***** > @many_jobs_threshold
+          if (@buffers.size % @many_jobs_report_interval).zero?
+            logger.info("pull: many jobs in queue: #{@buffers.size}")
+          end
+        elsif****@buffe***** == (@many_jobs_threshold - 1)
+          logger.info("pull: reducing jobs in queue: #{@buffers.size}")
+        end
+      end
+
+      def log_tag
+        "job_queue"
+      end
     end
 
     class WorkerConnection
-------------- next part --------------
HTML����������������������������...
Télécharger 



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