mirror of
https://github.com/puma/puma.git
synced 2022-11-09 13:48:40 -05:00
Additional debugging dumps just in case the parser is too ruthless. Removed the useless object tracking.
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@141 19e92222-5c0b-0410-8929-a290d50e31e9
This commit is contained in:
parent
8cec366dcd
commit
79be4b98e5
4 changed files with 39 additions and 139 deletions
|
@ -57,18 +57,18 @@ class Start < GemPlugin::Plugin "/commands"
|
||||||
settings = conf.merge(settings)
|
settings = conf.merge(settings)
|
||||||
end
|
end
|
||||||
|
|
||||||
config = Mongrel::Rails::RailsConfigurator.new(settings) do
|
config = Mongrel::Rails::RailsConfigurator.new(defaults) do
|
||||||
log "Starting Mongrel in #{settings[:environment]} mode at #{settings[:host]}:#{settings[:port]}"
|
log "Starting Mongrel in #{defaults[:environment]} mode at #{defaults[:host]}:#{defaults[:port]}"
|
||||||
|
|
||||||
if defaults[:daemon]
|
if defaults[:daemon]
|
||||||
log "Daemonizing, any open files are closed. Look at #{settings[:pid_file]} and #{settings[:log_file]} for info."
|
log "Daemonizing, any open files are closed. Look at #{defaults[:pid_file]} and #{defaults[:log_file]} for info."
|
||||||
daemonize
|
daemonize
|
||||||
end
|
end
|
||||||
|
|
||||||
listener do
|
listener do
|
||||||
mime = {}
|
mime = {}
|
||||||
if defaults[:mime_map]
|
if defaults[:mime_map]
|
||||||
log "Loading additional MIME types from #{settings[:mime_map]}"
|
log "Loading additional MIME types from #{defaults[:mime_map]}"
|
||||||
mime = load_mime_map(defaults[:mime_map], mime)
|
mime = load_mime_map(defaults[:mime_map], mime)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -77,16 +77,16 @@ class Start < GemPlugin::Plugin "/commands"
|
||||||
debug "/"
|
debug "/"
|
||||||
end
|
end
|
||||||
|
|
||||||
log "Starting Rails in environment #{settings[:environment]} ..."
|
log "Starting Rails in environment #{defaults[:environment]} ..."
|
||||||
uri "/", :handler => rails
|
uri "/", :handler => rails
|
||||||
log "Rails loaded."
|
log "Rails loaded."
|
||||||
|
|
||||||
log "Loading any Rails specific GemPlugins"
|
log "Loading any Rails specific GemPlugins"
|
||||||
load_plugins
|
load_plugins
|
||||||
|
|
||||||
if settings[:config_script]
|
if defaults[:config_script]
|
||||||
log "Loading #{settings[:config_script]} external config script"
|
log "Loading #{defaults[:config_script]} external config script"
|
||||||
run_config(settings[:config_script])
|
run_config(defaults[:config_script])
|
||||||
end
|
end
|
||||||
|
|
||||||
setup_rails_signals
|
setup_rails_signals
|
||||||
|
|
|
@ -448,7 +448,8 @@ module Mongrel
|
||||||
rescue EOFError,Errno::ECONNRESET,Errno::EPIPE,Errno::EINVAL
|
rescue EOFError,Errno::ECONNRESET,Errno::EPIPE,Errno::EINVAL
|
||||||
# ignored
|
# ignored
|
||||||
rescue HttpParserError
|
rescue HttpParserError
|
||||||
STDERR.puts "BAD CLIENT: #$!"
|
STDERR.puts "BAD CLIENT (#{params["REMOTE_ADDR"]}): #$!"
|
||||||
|
STDERR.puts "REQUEST DATA: #{data}"
|
||||||
rescue => details
|
rescue => details
|
||||||
STDERR.puts "ERROR: #$!"
|
STDERR.puts "ERROR: #$!"
|
||||||
STDERR.puts details.backtrace.join("\n")
|
STDERR.puts details.backtrace.join("\n")
|
||||||
|
|
|
@ -43,7 +43,6 @@ end
|
||||||
|
|
||||||
module ObjectTracker
|
module ObjectTracker
|
||||||
@active_objects = nil
|
@active_objects = nil
|
||||||
@live_object_tracking = true
|
|
||||||
|
|
||||||
def ObjectTracker.configure
|
def ObjectTracker.configure
|
||||||
@active_objects = Set.new
|
@active_objects = Set.new
|
||||||
|
@ -53,17 +52,7 @@ module ObjectTracker
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def ObjectTracker.start
|
|
||||||
@live_object_tracking = true
|
|
||||||
end
|
|
||||||
|
|
||||||
def ObjectTracker.stop
|
|
||||||
@live_object_tracking = false
|
|
||||||
end
|
|
||||||
|
|
||||||
def ObjectTracker.sample
|
def ObjectTracker.sample
|
||||||
Class.stopit do
|
|
||||||
ospace = Set.new
|
ospace = Set.new
|
||||||
counts = {}
|
counts = {}
|
||||||
|
|
||||||
|
@ -90,7 +79,6 @@ module ObjectTracker
|
||||||
|
|
||||||
[@active_objects, top_20]
|
[@active_objects, top_20]
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -121,7 +109,6 @@ module Kernel
|
||||||
end
|
end
|
||||||
|
|
||||||
def log_open_files
|
def log_open_files
|
||||||
Class.stopit do
|
|
||||||
open_counts = {}
|
open_counts = {}
|
||||||
$open_files.each do |f,args|
|
$open_files.each do |f,args|
|
||||||
open_counts[args] ||= 0
|
open_counts[args] ||= 0
|
||||||
|
@ -129,93 +116,10 @@ module Kernel
|
||||||
end
|
end
|
||||||
MongrelDbg::trace(:files, open_counts.to_yaml)
|
MongrelDbg::trace(:files, open_counts.to_yaml)
|
||||||
end
|
end
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Class
|
|
||||||
alias_method :orig_new, :new
|
|
||||||
|
|
||||||
@@count = 0
|
|
||||||
@@stopit = false
|
|
||||||
@@class_caller_count = Hash.new{|hash,key| hash[key] = Hash.new(0)}
|
|
||||||
|
|
||||||
def new(*arg,&blk)
|
|
||||||
unless @@stopit
|
|
||||||
@@stopit = true
|
|
||||||
@@count += 1
|
|
||||||
@@class_caller_count[self][caller.join("\n\t")] += 1
|
|
||||||
@@stopit = false
|
|
||||||
end
|
|
||||||
orig_new(*arg,&blk)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
def Class.report_object_creations(out=$stderr, more_than=20)
|
|
||||||
Class.stopit do
|
|
||||||
out.puts "Number of objects created = #{@@count}"
|
|
||||||
|
|
||||||
total = Hash.new(0)
|
|
||||||
|
|
||||||
@@class_caller_count.each_key do |klass|
|
|
||||||
caller_count = @@class_caller_count[klass]
|
|
||||||
caller_count.each_value do |count|
|
|
||||||
total[klass] += count
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
klass_list = total.keys.sort{|klass_a, klass_b|
|
|
||||||
a = total[klass_a]
|
|
||||||
b = total[klass_b]
|
|
||||||
if a != b
|
|
||||||
-1* (a <=> b)
|
|
||||||
else
|
|
||||||
klass_a.to_s <=> klass_b.to_s
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
below_count = 0
|
|
||||||
|
|
||||||
klass_list.each do |klass|
|
|
||||||
below_calls = 0
|
|
||||||
if total[klass] > more_than
|
|
||||||
out.puts "#{total[klass]}\t#{klass} objects created."
|
|
||||||
caller_count = @@class_caller_count[ klass]
|
|
||||||
caller_count.keys.sort_by{|call| -1*caller_count[call]}.each do |call|
|
|
||||||
if caller_count[call] > more_than
|
|
||||||
out.puts "\t** #{caller_count[call]} #{klass} objects AT:"
|
|
||||||
out.puts "\t#{call}\n\n"
|
|
||||||
else
|
|
||||||
below_calls += 1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
out.puts "\t#{below_calls} more objects had calls less that #{more_than} limit.\n\n" if below_calls > 0
|
|
||||||
else
|
|
||||||
below_count += 1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
out.puts "\t** #{below_count} More objects were created but the count was below the #{more_than} limit." if below_count > 0
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def Class.reset_object_creations
|
|
||||||
Class.stopit do
|
|
||||||
@@count = 0
|
|
||||||
@@class_caller_count = Hash.new{|hash,key| hash[key] = Hash.new(0)}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def Class.stopit
|
|
||||||
@@stopit = true
|
|
||||||
yield
|
|
||||||
@@stopit = false
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
module RequestLog
|
module RequestLog
|
||||||
|
|
||||||
# Just logs whatever requests it gets to STDERR (which ends up in the mongrel
|
# Just logs whatever requests it gets to STDERR (which ends up in the mongrel
|
||||||
|
@ -264,7 +168,6 @@ end
|
||||||
|
|
||||||
|
|
||||||
END {
|
END {
|
||||||
open("log/mongrel_debug/object_tracking.log", "w") {|f| Class.report_object_creations(f) }
|
|
||||||
MongrelDbg::trace(:files, "FILES OPEN AT EXIT")
|
MongrelDbg::trace(:files, "FILES OPEN AT EXIT")
|
||||||
log_open_files
|
log_open_files
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,10 +24,6 @@ class MongrelDbgTest < Test::Unit::TestCase
|
||||||
assert File.exist?("log/mongrel_debug"), "Didn't make logging directory"
|
assert File.exist?("log/mongrel_debug"), "Didn't make logging directory"
|
||||||
assert File.exist?("log/mongrel_debug/rails.log"), "Didn't make the rails.log file"
|
assert File.exist?("log/mongrel_debug/rails.log"), "Didn't make the rails.log file"
|
||||||
assert File.size("log/mongrel_debug/rails.log") > 0, "Didn't write anything to the log."
|
assert File.size("log/mongrel_debug/rails.log") > 0, "Didn't write anything to the log."
|
||||||
|
|
||||||
Class.report_object_creations(out)
|
|
||||||
Class.reset_object_creations
|
|
||||||
Class.report_object_creations(out)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue