skynet
skynet copied to clipboard
多agent,服务之间消息延迟很高
function CMD.request(id, addr) socket.start(id)
local code, url, method, header, body = httpd.read_request(sockethelper.readfunc(id), 8192) --syslog.trace("---------------------code:%s %s, %d, %d",code, method, id, skynet.self()) if code then local origin = header['origin'] if 'OPTIONS' == method then response(id, 200, '', origin) socket.close(id) return end
if code ~= 200 then
response(id, code, '', origin)
socket.close(id)
else
local usrname = header["username"]
-- trace("----- usrname:[%s]", usrname)
local session_id = header["sessionid"]
if not usrname then
response(id, 400, "header username no set", origin)
socket.close(id)
else
usrname = tostring(usrname)
local ret = skynet.call(database, "lua", "allow_login", usrname, addr)
if not ret then
response(id, 503, "server maintain", origin)
socket.close(id)
return
end
local agent = skynet.call(agentmgr, "lua", "query", usrname)
if not agent then --极端情况
response(id, 503, "server busy", origin)
socket.close(id)
return
end
--转到agent去处理
socket.abandon(id)
skynet.send(agent, "lua", "request", id, body, session_id, usrname, origin)
end
end
else if url == sockethelper.socket_error then skynet.error("socket closed") else skynet.error(url) end socket.close(id) end end
这是webagent的代码,消息过多后, skynet.send到agent的消息,agent收到延时很高
这不是issue吧