You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The worker process CPU usage could be 100% if we use the following configuration pattern:
stream {
server {
listen3105 reuseport;
lua_check_client_abort on; # must be enabledcontent_by_lua_block {
local sock, err = ngx.req.socket(true)
sock:settimeout(1800 * 1000)
local readline = sock:receiveuntil("\n")
while not ngx.worker.exiting() do
local line, err = readline(1)
ngx.log(ngx.ERR, "line: ", line)
if not line then
if err then
ngx.log(ngx.ERR, err)
break
end
else
ngx.sleep(5000) -- other yieldable API is also applicable.
end
end
}
}
}
Building a connection through nc and sending some characters then closing it, in the meanwhile, observing the CPU usage by top.
$ nc 127.0.0.1 3105
asjdkl
zxckj
^C
Now you can find the CPU usage reaches 100%.
It's irrelevant with the version of ngx_stream_lua, you can reproduce this problem even with the newest OpenResty.
After investigating the internal of stream-lua-nginx-module, I found it was caused by the indefinitely trigger of ngx_stram_lua_check_broken_connection, which doesn't the check ev->pending_eof flag.
Hello!
The worker process CPU usage could be 100% if we use the following configuration pattern:
Building a connection through
nc
and sending some characters then closing it, in the meanwhile, observing the CPU usage bytop
.Now you can find the CPU usage reaches 100%.
It's irrelevant with the version of ngx_stream_lua, you can reproduce this problem even with the newest OpenResty.
After investigating the internal of stream-lua-nginx-module, I found it was caused by the indefinitely trigger of
ngx_stram_lua_check_broken_connection
, which doesn't the checkev->pending_eof
flag.BTW, this issue was found by @tianchaijz.
The text was updated successfully, but these errors were encountered: