skynet
skynet copied to clipboard
websocket wss收到ws请求报错, 导致socket: accept error: Too many open files
https://github.com/cloudwu/skynet/blob/1ba381a1c209ae6eea8ecec0fffac90a3340f350/lualib/http/websocket.lua#L404 此处报错没有执行socket.close,错误log是
skyengine/lualib/http/tlshelper.lua:30: SSL_do_handshake error:1 ret:-1
之前用nginx转发是正常, 今天想试试直连,结果压测一下爆了。
改了下目前没出问题了
local state = pcall(init)
if not state then
socket.close(socket_id)
tls.closefunc(tls_ctx)()
return
end
@lvzixun tls 握手阶段是否应该在出错时先关闭 fd ? 即这个 pcall 需要内置在 init 函数内。
看起来 httpc https://github.com/cloudwu/skynet/blob/1ba381a1c209ae6eea8ecec0fffac90a3340f350/lualib/http/httpc.lua#L98 也有这个问题