diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index ef7866dce7456e7919a25ed32f3715e283548b4d..0feb255fd2ff6f597cd0ad7da3939c6c6c897bfe 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 beedc94a74abdb4542411263e4dc6a6d9438ff91..f02ea6132eb6f23b64a6c996cb2b46d71f6502d3 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 6ef3dcf72a272958a862a98a19d2887ca77f8206..13d55748aded6926f9e5c695558646aa9fed03e5 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?