CPU hogging to 100%

I sometimes have NodeRed hog one of the cores to 100 % .

It effectively blocks NodeRed entirely and I cannot access the dashboard anymore. There is nothing in the logs and the only way to get things working again is to kill and restart node-red.

What is the best way to debug this.

I have not yet experienced this kind of problem so I am not the best source to help you.

Maybe using the unix strace command can give you already a clue of the root cause of your problem.

So you need to find the PID of your node-red process (which is 5470 in your screenshot above)
and then run a command like (replace 5470 with actual PID of your node-RED process):

sudo strace -p 5470

:+1: thanks, will try

I've seen this when output from a node (like an on/off flow) feeds back into itself. It ends up with a feedback loop that you can't recover from. I see this with things like the dashboard_ui switch or pub/sub to mqtt topics.

I would expect this is a badly-behaving contrib node. Are there any logged errors? You could try upping the loging level. Are you using the exec node to call an external script anywhere? Though that should show up in the list under its own name.

Can you correlate when it happens with something that your flows are executing?

For me too the usual cause of this is an mqtt loop. If you are using mqtt then stop the mqtt server and see if it recovers, if it does then that is the problem.

1 Like

Yes, it can easily happen that such a mqtt loop is "created" by accident. Especially if you have many flow tabs, using links etc etc

The following example is such a one, Node-RED gets so busy, nothing is logged in the debug log and the editor is not responding anymore. Don't try it on a mission critical system since you have to stop/start node-red to recover
image

1 Like

Thanks for all the replies.
Sorry for my late reply back, it didnt happen in a while. But it just did again.

It is not MQTT related as far as I can tell. I stopped the server and that didnt change anything, CPU remained high.
But I am also experiencing some issues with my tradfri gateway ( tradfri = garbage, dont buy) lately and I suspect that the problem is there somewhere.

Did “strace” command provide some valuable input?

Thanks yes! It did provide output. a *lot * of output :slight_smile:
Went through it but couldn't really make heads or tails from it unfortunately.

You can of course post the output in this thread and maybe someone else is able to make sense. So far not much info is shared to help you with root cause analysis.

Yes maybe I will put the output here. Will be a lot if info though. At least 5 to 600 lines. Maybe double... :blush:

Use the plus <-- on the left to add a snippet

Urm, isn't that on Slack? :smile:

yes - too many channels... too busy a week...

2 Likes

I feel your pain indeed. Story of most of our lives I expect.

Note that you can upload a file (also a text file) when adding a comment using the button below !
So you can upload the complete strace output as a text file in a comment.

Take care that this makes only sense for troubleshooting when you are still having the CPU 100% problem !

.

Any updates on this one?
I have same issue. I've got NR running on RaspberryPi 3 with DietPi distro.
NR was installed with DietPi installer interface. Dashboard UI installed through NR's UI package manager. MQTT server is running on the same machine.
Some time after installing the Dashboard UI one CPU gets hogged up 100%.
While UI nodes are not used in the project, the issue persists.

I added my strace output below. Strace stopped giving output just when CPU hogging started. Got NR to hang faster by refreshing node-red-dashboard-ui page multiple times.

strace output
epoll_ctl(3, EPOLL_CTL_MOD, 24, {EPOLLIN, {u32=24, u64=131274472811397144}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=24, u64=131274472811397144}}], 1024, 1466, NULL, 8) = 1
read(24, "GET /ui/css/app.min.less HTTP/1."..., 65536) = 499
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 1448, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 1446, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
write(24, "HTTP/1.1 304 Not Modified\r\nX-Pow"..., 242) = 242
epoll_ctl(3, EPOLL_CTL_MOD, 24, {EPOLLIN, {u32=24, u64=131274472811397144}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=24, u64=131274472811397144}}], 1024, 1445, NULL, 8) = 1
read(24, "GET /ui/socket.io/?EIO=3&transpo"..., 65536) = 404
write(24, "HTTP/1.1 200 OK\r\nContent-Type: t"..., 332) = 332
epoll_ctl(3, EPOLL_CTL_MOD, 24, {EPOLLIN, {u32=24, u64=131274472811397144}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=24, u64=131274472811397144}}], 1024, 1368, NULL, 8) = 1
read(24, "GET /ui/icon192x192.png HTTP/1.1"..., 65536) = 454
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=21, u64=131274472811397141}}, {EPOLLIN, {u32=22, u64=131274472811397142}}, {EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 1362, NULL, 8) = 3
accept4(21, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK) = 27
accept4(21, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK) = -1 EAGAIN (Resource temporarily unavailable)
read(22, "GET /ui/socket.io/?EIO=3&transpo"..., 65536) = 429
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_ctl(3, EPOLL_CTL_ADD, 27, {EPOLLIN, {u32=27, u64=131274472811397147}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}, {EPOLLIN, {u32=27, u64=131274472811397147}}], 1024, 1357, NULL, 8) = 2
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
writev(22, [{iov_base="HTTP/1.1 200 OK\r\nContent-Type: t"..., iov_len=253}, {iov_base="\37\213\10\0\0\0\0\0\0\3\355UKo\3338\20\376+\6{\225\f;\262\35\333\307\272\233\335\2"..., iov_len=826}], 2) = 1079
read(27, "GET /ui/socket.io/?EIO=3&transpo"..., 65536) = 605
write(27, "HTTP/1.1 101 Switching Protocols"..., 175) = 175
setsockopt(27, SOL_TCP, TCP_NODELAY, [1], 4) = 0
epoll_ctl(3, EPOLL_CTL_MOD, 22, {EPOLLIN, {u32=22, u64=131274472811397142}}) = 0
epoll_ctl(3, EPOLL_CTL_MOD, 27, {EPOLLIN, {u32=27, u64=131274472811397147}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 1352, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 1351, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
writev(24, [{iov_base="HTTP/1.1 200 OK\r\nX-Powered-By: E"..., iov_len=279}, {iov_base="\211PNG\r\n\32\n\0\0\0\rIHDR\0\0\0\300\0\0\0\300\10\6\0\0\0R\334l"..., iov_len=5697}], 2) = 5976
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_ctl(3, EPOLL_CTL_MOD, 24, {EPOLLIN, {u32=24, u64=131274472811397144}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 1349, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
epoll_pwait(3, [{EPOLLIN, {u32=24, u64=131274472811397144}}], 1024, 1349, NULL, 8) = 1
read(24, "POST /ui/socket.io/?EIO=3&transp"..., 65536) = 545
write(24, "HTTP/1.1 200 OK\r\nContent-Type: t"..., 277) = 277
epoll_ctl(3, EPOLL_CTL_MOD, 24, {EPOLLIN, {u32=24, u64=131274472811397144}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=22, u64=131274472811397142}}], 1024, 1321, NULL, 8) = 1
read(22, "GET /ui/socket.io/?EIO=3&transpo"..., 65536) = 431
epoll_pwait(3, [{EPOLLIN, {u32=27, u64=131274472811397147}}], 1024, 1320, NULL, 8) = 1
read(27, "\301\210\316[\320\16\374q\370\304\201\21\325\16", 65536) = 14
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 1298, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 1298, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 1297, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
write(27, "\201\0063probe", 8)          = 8
epoll_ctl(3, EPOLL_CTL_MOD, 27, {EPOLLIN, {u32=27, u64=131274472811397147}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=24, u64=131274472811397144}}], 1024, 100, NULL, 8) = 1
read(24, "POST /ui/socket.io/?EIO=3&transp"..., 65536) = 549
write(24, "HTTP/1.1 200 OK\r\nContent-Type: t"..., 277) = 277
write(22, "HTTP/1.1 200 OK\r\nContent-Type: t"..., 251) = 251
epoll_ctl(3, EPOLL_CTL_MOD, 24, {EPOLLIN, {u32=24, u64=131274472811397144}}) = 0
epoll_ctl(3, EPOLL_CTL_MOD, 22, {EPOLLIN, {u32=22, u64=131274472811397142}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=26, u64=131274472811397146}}], 1024, 49, NULL, 8) = 1
read(26, "GET /ui/icon64x64.png HTTP/1.1\r\n"..., 65536) = 494
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=27, u64=131274472811397147}}, {EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 47, NULL, 8) = 2
read(27, "\301\203\216\v\33\352\274\16\33", 65536) = 9
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 45, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
write(26, "HTTP/1.1 304 Not Modified\r\nX-Pow"..., 241) = 241
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_ctl(3, EPOLL_CTL_MOD, 26, {EPOLLIN, {u32=26, u64=131274472811397146}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 43, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
epoll_pwait(3, [], 1024, 42, NULL, 8)   = 0
epoll_pwait(3, [{EPOLLIN, {u32=26, u64=131274472811397146}}], 1024, 1240, NULL, 8) = 1
read(26, "GET /ui/ HTTP/1.1\r\nHost: 192.168"..., 65536) = 580
mprotect(0x4f600000, 524288, PROT_READ|PROT_WRITE) = 0
mprotect(0x2a280000, 524288, PROT_READ|PROT_WRITE) = 0
futex(0x1ccb5ac, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1ccb5a8, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1ccb590, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1ccb5ac, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1ccb5a8, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1ccb590, FUTEX_WAKE_PRIVATE, 1) = 1
getpid()                                = 5217
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 730, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 729, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
write(26, "HTTP/1.1 304 Not Modified\r\nX-Pow"..., 241) = 241
epoll_ctl(3, EPOLL_CTL_MOD, 26, {EPOLLIN, {u32=26, u64=131274472811397146}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=27, u64=131274472811397147}}], 1024, 727, NULL, 8) = 1
read(27, "\210\202\244d\236\310\247\215", 65536) = 8
write(27, "\210\2\3\351", 4)            = 4
shutdown(27, SHUT_WR)                   = 0
epoll_ctl(3, EPOLL_CTL_MOD, 27, {EPOLLIN, {u32=27, u64=131274472811397147}}) = 0
epoll_pwait(3, [{EPOLLIN|EPOLLERR|EPOLLHUP, {u32=27, u64=131274472811397147}}], 1024, 720, NULL, 8) = 1
read(27, "", 65536)                     = 0
epoll_ctl(3, EPOLL_CTL_DEL, 27, 0x7eaf2c48) = 0
close(27)                               = 0
epoll_pwait(3, [{EPOLLIN, {u32=26, u64=131274472811397146}}], 1024, 719, NULL, 8) = 1
read(26, "GET /ui/css/app.min.css HTTP/1.1"..., 65536) = 477
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=22, u64=131274472811397142}}, {EPOLLIN, {u32=8, u64=131274472811397128}}, {EPOLLIN, {u32=24, u64=131274472811397144}}], 1024, 709, NULL, 8) = 3
read(22, "GET /ui/icon120x120.png HTTP/1.1"..., 65536) = 496
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
read(24, "GET /ui/socket.io/socket.io.js H"..., 65536) = 406
write(24, "HTTP/1.1 304 Not Modified\r\nDate:"..., 90) = 90
epoll_ctl(3, EPOLL_CTL_MOD, 24, {EPOLLIN, {u32=24, u64=131274472811397144}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 705, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
write(26, "HTTP/1.1 304 Not Modified\r\nX-Pow"..., 243) = 243
write(22, "HTTP/1.1 304 Not Modified\r\nX-Pow"..., 241) = 241
epoll_ctl(3, EPOLL_CTL_MOD, 26, {EPOLLIN, {u32=26, u64=131274472811397146}}) = 0
epoll_ctl(3, EPOLL_CTL_MOD, 22, {EPOLLIN, {u32=22, u64=131274472811397142}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=22, u64=131274472811397142}}], 1024, 702, NULL, 8) = 1
read(22, "GET /ui/js/app.min.js HTTP/1.1\r\n"..., 65536) = 461
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=26, u64=131274472811397146}}, {EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 677, NULL, 8) = 2
read(26, "GET /ui/i18n.js HTTP/1.1\r\nHost: "..., 65536) = 452
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 673, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
write(22, "HTTP/1.1 304 Not Modified\r\nX-Pow"..., 244) = 244
write(26, "HTTP/1.1 304 Not Modified\r\nX-Pow"..., 241) = 241
epoll_ctl(3, EPOLL_CTL_MOD, 22, {EPOLLIN, {u32=22, u64=131274472811397142}}) = 0
epoll_ctl(3, EPOLL_CTL_MOD, 26, {EPOLLIN, {u32=26, u64=131274472811397146}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=26, u64=131274472811397146}}], 1024, 671, NULL, 8) = 1
read(26, "GET /ui/css/app.min.less HTTP/1."..., 65536) = 499
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 653, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 651, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
write(26, "HTTP/1.1 304 Not Modified\r\nX-Pow"..., 242) = 242
epoll_ctl(3, EPOLL_CTL_MOD, 26, {EPOLLIN, {u32=26, u64=131274472811397146}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=26, u64=131274472811397146}}], 1024, 650, NULL, 8) = 1
read(26, "GET /ui/socket.io/?EIO=3&transpo"..., 65536) = 404
write(26, "HTTP/1.1 200 OK\r\nContent-Type: t"..., 332) = 332
epoll_ctl(3, EPOLL_CTL_MOD, 26, {EPOLLIN, {u32=26, u64=131274472811397146}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=26, u64=131274472811397146}}], 1024, 573, NULL, 8) = 1
read(26, "GET /ui/icon192x192.png HTTP/1.1"..., 65536) = 454
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}, {EPOLLIN, {u32=22, u64=131274472811397142}}], 1024, 568, NULL, 8) = 2
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
read(22, "GET /ui/socket.io/?EIO=3&transpo"..., 65536) = 429
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}, {EPOLLIN, {u32=21, u64=131274472811397141}}], 1024, 563, NULL, 8) = 2
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
accept4(21, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK) = 28
accept4(21, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK) = -1 EAGAIN (Resource temporarily unavailable)
epoll_ctl(3, EPOLL_CTL_ADD, 28, {EPOLLIN, {u32=28, u64=131274472811397148}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}, {EPOLLIN, {u32=28, u64=131274472811397148}}], 1024, 559, NULL, 8) = 2
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
writev(22, [{iov_base="HTTP/1.1 200 OK\r\nContent-Type: t"..., iov_len=253}, {iov_base="\37\213\10\0\0\0\0\0\0\3\355UKo\3338\20\376+\6{\225\f;\262\35\333\307\272\233\335\2"..., iov_len=826}], 2) = 1079
read(28, "GET /ui/socket.io/?EIO=3&transpo"..., 65536) = 605
write(28, "HTTP/1.1 101 Switching Protocols"..., 175) = 175
setsockopt(28, SOL_TCP, TCP_NODELAY, [1], 4) = 0
epoll_ctl(3, EPOLL_CTL_MOD, 22, {EPOLLIN, {u32=22, u64=131274472811397142}}) = 0
epoll_ctl(3, EPOLL_CTL_MOD, 28, {EPOLLIN, {u32=28, u64=131274472811397148}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 552, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
writev(26, [{iov_base="HTTP/1.1 200 OK\r\nX-Powered-By: E"..., iov_len=279}, {iov_base="\211PNG\r\n\32\n\0\0\0\rIHDR\0\0\0\300\0\0\0\300\10\6\0\0\0R\334l"..., iov_len=5697}], 2) = 5976
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_ctl(3, EPOLL_CTL_MOD, 26, {EPOLLIN, {u32=26, u64=131274472811397146}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 550, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
epoll_pwait(3, [{EPOLLIN, {u32=28, u64=131274472811397148}}], 1024, 550, NULL, 8) = 1
read(28, "\301\210\0253\275\"'\31\225\350Zy\270\"", 65536) = 14
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 543, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 543, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 542, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
write(28, "\201\0063probe", 8)          = 8
epoll_ctl(3, EPOLL_CTL_MOD, 28, {EPOLLIN, {u32=28, u64=131274472811397148}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=26, u64=131274472811397146}}], 1024, 100, NULL, 8) = 1
read(26, "POST /ui/socket.io/?EIO=3&transp"..., 65536) = 545
write(26, "HTTP/1.1 200 OK\r\nContent-Type: t"..., 277) = 277
epoll_ctl(3, EPOLL_CTL_MOD, 26, {EPOLLIN, {u32=26, u64=131274472811397146}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=22, u64=131274472811397142}}], 1024, 78, NULL, 8) = 1
read(22, "GET /ui/socket.io/?EIO=3&transpo"..., 65536) = 431
epoll_pwait(3, [{EPOLLIN, {u32=26, u64=131274472811397146}}], 1024, 77, NULL, 8) = 1
read(26, "GET /ui/icon64x64.png HTTP/1.1\r\n"..., 65536) = 494
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 54, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 53, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
write(26, "HTTP/1.1 304 Not Modified\r\nX-Pow"..., 241) = 241
epoll_ctl(3, EPOLL_CTL_MOD, 26, {EPOLLIN, {u32=26, u64=131274472811397146}}) = 0
epoll_pwait(3, [], 1024, 52, NULL, 8)   = 0
write(22, "HTTP/1.1 200 OK\r\nContent-Type: t"..., 230) = 230
epoll_ctl(3, EPOLL_CTL_MOD, 22, {EPOLLIN, {u32=22, u64=131274472811397142}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=28, u64=131274472811397148}}], 1024, 99, NULL, 8) = 1
read(28, "\301\203.X\304\376\34]\304", 65536) = 9
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 96, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 95, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 95, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
epoll_pwait(3, [{EPOLLIN, {u32=28, u64=131274472811397148}}], 1024, 94, NULL, 8) = 1
read(28, "\301\227U\16\372\rg?p[\177\303. \37#2D\371\332\327#\34\"\263X\337\v\372", 65536) = 29
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 94, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 93, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 93, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
write(28, "\201\02442[\"ui-replay-done\"]", 22) = 22
epoll_ctl(3, EPOLL_CTL_MOD, 28, {EPOLLIN, {u32=28, u64=131274472811397148}}) = 0
epoll_pwait(3, [], 1024, 49, NULL, 8)   = 0
epoll_pwait(3, [{EPOLLIN, {u32=22, u64=131274472811397142}}], 1024, 383, NULL, 8) = 1
read(22, "GET /ui/ HTTP/1.1\r\nHost: 192.168"..., 65536) = 580
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 139, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 138, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
write(22, "HTTP/1.1 304 Not Modified\r\nX-Pow"..., 241) = 241
epoll_ctl(3, EPOLL_CTL_MOD, 22, {EPOLLIN, {u32=22, u64=131274472811397142}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=28, u64=131274472811397148}}], 1024, 137, NULL, 8) = 1
read(28, "\210\202\31N^y\32\247", 65536) = 8
write(28, "\210\2\3\351", 4)            = 4
shutdown(28, SHUT_WR)                   = 0
epoll_ctl(3, EPOLL_CTL_MOD, 28, {EPOLLIN, {u32=28, u64=131274472811397148}}) = 0
epoll_pwait(3, [{EPOLLIN|EPOLLERR|EPOLLHUP, {u32=28, u64=131274472811397148}}], 1024, 108, NULL, 8) = 1
read(28, "", 65536)                     = 0
epoll_ctl(3, EPOLL_CTL_DEL, 28, 0x7eaf2c48) = 0
close(28)                               = 0
epoll_pwait(3, [{EPOLLIN, {u32=22, u64=131274472811397142}}], 1024, 107, NULL, 8) = 1
read(22, "GET /ui/css/app.min.css HTTP/1.1"..., 65536) = 477
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=26, u64=131274472811397146}}, {EPOLLIN, {u32=24, u64=131274472811397144}}, {EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 99, NULL, 8) = 3
read(26, "GET /ui/icon120x120.png HTTP/1.1"..., 65536) = 496
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
read(24, "GET /ui/socket.io/socket.io.js H"..., 65536) = 406
write(24, "HTTP/1.1 304 Not Modified\r\nDate:"..., 90) = 90
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_ctl(3, EPOLL_CTL_MOD, 24, {EPOLLIN, {u32=24, u64=131274472811397144}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 94, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
write(22, "HTTP/1.1 304 Not Modified\r\nX-Pow"..., 243) = 243
write(26, "HTTP/1.1 304 Not Modified\r\nX-Pow"..., 241) = 241
epoll_ctl(3, EPOLL_CTL_MOD, 22, {EPOLLIN, {u32=22, u64=131274472811397142}}) = 0
epoll_ctl(3, EPOLL_CTL_MOD, 26, {EPOLLIN, {u32=26, u64=131274472811397146}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=26, u64=131274472811397146}}], 1024, 92, NULL, 8) = 1
read(26, "GET /ui/js/app.min.js HTTP/1.1\r\n"..., 65536) = 461
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=22, u64=131274472811397142}}, {EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 61, NULL, 8) = 2
read(22, "GET /ui/i18n.js HTTP/1.1\r\nHost: "..., 65536) = 452
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 57, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
write(26, "HTTP/1.1 304 Not Modified\r\nX-Pow"..., 244) = 244
write(22, "HTTP/1.1 304 Not Modified\r\nX-Pow"..., 241) = 241
epoll_ctl(3, EPOLL_CTL_MOD, 26, {EPOLLIN, {u32=26, u64=131274472811397146}}) = 0
epoll_ctl(3, EPOLL_CTL_MOD, 22, {EPOLLIN, {u32=22, u64=131274472811397142}}) = 0
epoll_pwait(3, [{EPOLLIN, {u32=22, u64=131274472811397142}}], 1024, 55, NULL, 8) = 1
read(22, "GET /ui/css/app.min.less HTTP/1."..., 65536) = 499
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 38, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x1bad62c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1bad628, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1bad60c, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [{EPOLLIN, {u32=8, u64=131274472811397128}}], 1024, 36, NULL, 8) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
write(22, "HTTP/1.1 304 Not Modified\r\nX-Pow"..., 242) = 242
epoll_ctl(3, EPOLL_CTL_MOD, 22, {EPOLLIN, {u32=22, u64=131274472811397142}}) = 0
epoll_pwait(3, [], 1024, 35, NULL, 8)   = 0
futex(0x1ccb5ac, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1ccb5a8, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1ccb590, FUTEX_WAKE_PRIVATE, 1) = 1
cacheflush(0x71c688e0, 0x71c68abd, 0, 0x71c688a1, 0x1d0f6f0) = 0
futex(0x1ccb5ac, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1ccb5a8, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1ccb590, FUTEX_WAKE_PRIVATE, 1) = 1
cacheflush(0x71c68b00, 0x71c68b97, 0, 0x71c68ac1, 0x1d0f6ec) = 0
cacheflush(0x71c68be0, 0x71c69408, 0, 0x71c68ba1, 0x1d0f7e8) = 0
futex(0x1ccb5ac, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1ccb5a8, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1ccb590, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1ccb5ac, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1ccb5a8, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
futex(0x1ccb590, FUTEX_WAKE_PRIVATE, 1) = 1
cacheflush(0x71c69460, 0x71c6955f, 0, 0x71c69421, 0x1d0f6ec) = 0
cacheflush(0x71c695a0, 0x71c6b03c, 0, 0x71c69561, 0x1d0f6f0) = 0

Hi,

All though I could not find any related info in the error output, I eventually removed the tradfri related nodes to see if they were indeed the problem. And I have had not had the issue ever since. I do have a problem with the entire setup freezing once in a while but I suspect that has more to do with the hardware it runs on then with Node Red. It runs on an Orange Pi Zero.

Thanks for sharing the strace. As strace logging stopped when CPU hogging started, this indicated that no system calls were made when the CPU 100% problem appeared - in other words the CPU is spending the 100% in user code (no system calls). So there is something wrong with the user code. I think this problem is due to the specific flows you are running (and not really due to Raspberry PI3 or DietPi) - maybe you are using a specific node that is causing this problem.

Maybe you can instrument you node.js application using https://github.com/RuntimeTools/appmetrics .
For your specific problem I would then enable profiling (https://github.com/RuntimeTools/appmetrics#appmetricsconfigureoptions )
I admit I have myself not yet used this tool .... but I have also not yet encountered a CPU problem like you have.

1 Like