From bb58544a706191c7c253c00c084ffbd74636adec Mon Sep 17 00:00:00 2001 From: Raphael Sofaer <raphael@joindiaspora.com> Date: Thu, 10 Feb 2011 15:51:22 -0800 Subject: [PATCH] Add logging for GC (slight slowdown, but worth it for the data) --- app/controllers/application_controller.rb | 4 ++++ config/environments/production.rb | 1 + lib/log_overrider.rb | 2 ++ 3 files changed, 7 insertions(+) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index ef7866dce7..0feb255fd2 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -11,6 +11,7 @@ class ApplicationController < ActionController::Base before_filter :set_invites before_filter :set_locale before_filter :which_action_and_user + prepend_before_filter :clear_gc_stats def set_contacts_notifications_and_status if user_signed_in? @@ -50,4 +51,7 @@ class ApplicationController < ActionController::Base I18n.locale = request.compatible_language_from AVAILABLE_LANGUAGE_CODES end end + def clear_gc_stats + GC.clear_stats if GC.respond_to?(:clear_stats) + end end diff --git a/config/environments/production.rb b/config/environments/production.rb index beedc94a74..f02ea6132e 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -51,3 +51,4 @@ end # Sacrifice readability for a 10% performance boost Haml::Template::options[:ugly] = true +GC.enable_stats if GC.respond_to?(:enable_stats) diff --git a/lib/log_overrider.rb b/lib/log_overrider.rb index 6ef3dcf72a..13d55748ad 100644 --- a/lib/log_overrider.rb +++ b/lib/log_overrider.rb @@ -19,6 +19,7 @@ module ActionDispatch ActiveSupport::Deprecation.silence do message = "event=error error_class=#{exception.class} error_message='#{exception.message}' " + message << "gc_ms=#{GC.time} gc_collections=#{GC.collections} gc_bytes=#{GC.growth} " if GC.respond_to?(:enable_stats) message << "orig_error_message='#{exception.original_exception.message}'" if exception.respond_to?(:original_exception) message << "annotated_source='#{exception.annoted_source_code.to_s}' " if exception.respond_to?(:annoted_source_code) message << "app_backtrace='#{application_trace(exception).join(";")}'" @@ -41,6 +42,7 @@ class ActionController::LogSubscriber log_string = "event=request_completed status=#{payload[:status]} " log_string << "controller=#{payload[:controller]} action=#{payload[:action]} format=#{payload[:formats].first.to_s.upcase} " log_string << "ms=#{"%.0f" % event.duration} " + log_string << "gc_ms=#{GC.time} gc_collections=#{GC.collections} gc_bytes=#{GC.growth} " if GC.respond_to?(:enable_stats) log_string << "params='#{params.inspect}' " unless params.empty? #log_string << "additions='#{additions.join(" | ")}' " unless additions.blank? -- GitLab