23.10.2023, 11:45
@gjniewenhuijse, your system looks overloaded too. Another indication is non-zero rx_queue value. It means that messages cannot be processes quickly enough and are queued.
You can run this script, it will log all processes that have at least one message dropped.
Consider installing Group monitor app and check for duplicates and unnecessary object traffic that causes such overloads.
You can run this script, it will log all processes that have at least one message dropped.
Code:
inodes = {}
function collect(pid)
local res = io.readproc('ls -l /proc/' .. pid .. '/fd') or ''
local cmd = io.readfile('/proc/' .. pid .. '/cmdline') or ''
cmd = cmd:gsub('%z', ' '):trim()
for inode in res:gmatch('socket:%[(%d+)%]') do
inodes[ tonumber(inode) ] = cmd
end
end
pids = io.ls('/proc')
for _, pid in ipairs(pids) do
pid = tonumber(pid)
if pid then
collect(pid)
end
end
data = io.readfile('/proc/net/udp'):split('\n')
table.remove(data, 1)
function check(chunks)
local drops = tonumber(chunks[ 13 ]) or 0
if drops == 0 then
return
end
local inode = tonumber(chunks[ 10 ]) or 0
local cmd = inodes[ inode ]
if cmd then
log(cmd .. ', drops: ' .. drops)
end
end
for _, line in ipairs(data) do
chunks = line:trim():gsub('%s+', ' '):split(' ')
if #chunks == 13 then
check(chunks)
end
end
Consider installing Group monitor app and check for duplicates and unnecessary object traffic that causes such overloads.