Don't put MemoryLimit class in the OSM module as it breaks autoloading
This commit is contained in:
parent
5e2b8d087c
commit
723cb57e6d
1 changed files with 26 additions and 28 deletions
|
@ -7,38 +7,36 @@ end
|
||||||
# configured then setup some rack middleware to police the limit
|
# configured then setup some rack middleware to police the limit
|
||||||
if APP_CONFIG.include?('soft_memory_limit') and defined?(PhusionPassenger)
|
if APP_CONFIG.include?('soft_memory_limit') and defined?(PhusionPassenger)
|
||||||
# Define some rack middleware to police the soft memory limit
|
# Define some rack middleware to police the soft memory limit
|
||||||
module OSM
|
class MemoryLimit
|
||||||
class MemoryLimit
|
def initialize(app)
|
||||||
def initialize(app)
|
@app = app
|
||||||
@app = app
|
end
|
||||||
|
|
||||||
|
def call(env)
|
||||||
|
# Process this requst
|
||||||
|
status, headers, body = @app.call(env)
|
||||||
|
|
||||||
|
# Restart if we've hit our memory limit
|
||||||
|
if resident_size > APP_CONFIG['soft_memory_limit']
|
||||||
|
Process.kill("USR1", 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
def call(env)
|
# Return the result of this request
|
||||||
# Process this requst
|
[status, headers, body]
|
||||||
status, headers, body = @app.call(env)
|
end
|
||||||
|
private
|
||||||
# Restart if we've hit our memory limit
|
def resident_size
|
||||||
if resident_size > APP_CONFIG['soft_memory_limit']
|
# Read statm to get process sizes. Format is
|
||||||
Process.kill("USR1", 0)
|
# Size RSS Shared Text Lib Data
|
||||||
end
|
fields = File.open("/proc/self/statm") do |file|
|
||||||
|
fields = file.gets.split(" ")
|
||||||
# Return the result of this request
|
|
||||||
[status, headers, body]
|
|
||||||
end
|
|
||||||
private
|
|
||||||
def resident_size
|
|
||||||
# Read statm to get process sizes. Format is
|
|
||||||
# Size RSS Shared Text Lib Data
|
|
||||||
fields = File.open("/proc/self/statm") do |file|
|
|
||||||
fields = file.gets.split(" ")
|
|
||||||
end
|
|
||||||
|
|
||||||
# Return resident size in megabytes
|
|
||||||
return fields[1].to_i / 256
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Return resident size in megabytes
|
||||||
|
return fields[1].to_i / 256
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Install the memory limit checker
|
# Install the memory limit checker
|
||||||
Rails.configuration.middleware.use OSM::MemoryLimit
|
Rails.configuration.middleware.use MemoryLimit
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue