mod_measure_process: Report the enforced limit
The soft limit is what the kernel actually enforces, while the hard
limit is is how far you can change the soft limit without privileges.
Unless the process dynamically adjusts the soft limit, knowing the hard
limit is not as useful as knowing the soft limit.
Reporting the soft limit and the number of in-use FDs allows placing
alerts on expressions like 'process_open_fds / process_max_fds >= 0.95'
local io_open = io.open;
local dm = require "core.storagemanager".olddm;
-- Append a blob of data to a file
function dm.append_raw(username, host, datastore, ext, data)
if type(data) ~= "string" then return; end
local filename = dm.getpath(username, host, datastore, ext, true);
local ok;
local f, msg = io_open(filename, "r+");
if not f then
-- File did probably not exist, let's create it
f, msg = io_open(filename, "w");
if not f then
return nil, msg, "open";
end
end
local pos = f:seek("end");
ok, msg = f:write(data);
if not ok then
f:close();
return ok, msg, "write";
end
ok, msg = f:close();
if not ok then
return ok, msg;
end
return true, pos;
end