Lua 打开套接字错误
Lua open socket error
我正在使用 lua 作为 nginx (openresty) 的模块从远程主机获取文件。我的函数:
function readfile(url)
local http = require ("socket.http")
if not http then
error("Couldn't open socket.http")
end
http.TIMEOUT = 5
local body, code = http.request(url)
if not body then
error("Couldn't read the remote file: " .. code)
end
return body
end
我已经使用 Siege 测试了这段代码。当我设置的用户超过 100 个(例如)时,我发现了这个错误:
2018/03/27 09:36:38 [info] 10#10: *91018 shutdown() failed (107: Socket not connected), client: 172.18.0.7, server: localhost
当我设置更多的用户时,我有更多的错误。这是什么意思?谢谢你的帮助。
不要将 luasocket 库与 OpenResty 一起使用。生成的代码将在 http.request()
.
上阻塞
我想所有的 nginx worker 都阻塞了,这就是这些错误的原因。
为了您的目的,您可以使用以下库之一:
首先更灵活,允许使用安全传输。
第二个更简单 API.
并且都在内部使用 nginx Lua cosocket API 并且 100% 非阻塞开箱即用。
lua-resty-http 或 lua-resty-http-simple 在 http 上下文中的 init_by_lua 中不起作用。
可以在阻塞不被认为有害的 init 上下文中使用它。
我正在使用 lua 作为 nginx (openresty) 的模块从远程主机获取文件。我的函数:
function readfile(url)
local http = require ("socket.http")
if not http then
error("Couldn't open socket.http")
end
http.TIMEOUT = 5
local body, code = http.request(url)
if not body then
error("Couldn't read the remote file: " .. code)
end
return body
end
我已经使用 Siege 测试了这段代码。当我设置的用户超过 100 个(例如)时,我发现了这个错误:
2018/03/27 09:36:38 [info] 10#10: *91018 shutdown() failed (107: Socket not connected), client: 172.18.0.7, server: localhost
当我设置更多的用户时,我有更多的错误。这是什么意思?谢谢你的帮助。
不要将 luasocket 库与 OpenResty 一起使用。生成的代码将在 http.request()
.
我想所有的 nginx worker 都阻塞了,这就是这些错误的原因。
为了您的目的,您可以使用以下库之一:
首先更灵活,允许使用安全传输。 第二个更简单 API.
并且都在内部使用 nginx Lua cosocket API 并且 100% 非阻塞开箱即用。
lua-resty-http 或 lua-resty-http-simple 在 http 上下文中的 init_by_lua 中不起作用。 可以在阻塞不被认为有害的 init 上下文中使用它。