skynet icon indicating copy to clipboard operation
skynet copied to clipboard

多agent,服务之间消息延迟很高

Open yfengworld opened this issue 9 months ago • 1 comments

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收到延时很高

yfengworld avatar May 10 '24 02:05 yfengworld

这不是issue吧

terry8210 avatar May 10 '24 07:05 terry8210