gateway worker 如何判断是否拥堵

carlos66

项目涉及几十个设备的连接,客户说在同一时刻所有设备会发送消息过来,消息上附带图片,然后说我服务端就拥堵了,出现了延迟。
我想问有什么办法来检测是否拥堵了呢?非常感谢

1739 1 1
1个回答

blogdaren

我认为拥堵不拥堵得有个数据指标来衡量才科学,比如要求从客户端发起请求到服务端响应必须在1秒之内完成,如果超过了这个时间指标,那么就认为是是拥堵的,如果是拥堵了话那么就可以根据这个指标继续优化服务器的处理能力。

  • carlos66 2020-04-29

    过程是这样的,客户端的日志记录了发送开始与结束的时间间隔为30ms,

     09:55:06.191298   849 messagehandler] send message begin
     09:55:06.223420   849 messagehandler] send message end

    服务端实际上接收的时间到的时间也是如此,服务端接收到这个消息会转发给web端显示。

    现在的问题是,在客户端增加到20多个的时候,这个消息会在同一时刻发送到客户端,然而客户端可能会出现某一些消息会延迟几秒才发送,,但是将客户端 缩减一半左右,或者不发送图片就没有这样的现象出现。客户认为是我们服务端拥堵了才导致这样的结果。

  • blogdaren 2020-04-29

    1、某些客户端发送延迟? 难道是在onMessage()内处理完业务逻辑才发送消息的吗?
    2、你这日志只是记录是客户端发送的起始时间,并不能反映客户端从发送到最后接收到响应这段时间内的服务器实际处理能力;
    3、如果服务端网络没有问题、业务逻辑没有明显的阻塞、以及服务器的业务处理能力都在预期的指标内,那么基本上最大的可能就是带宽不足,图片会占用较大的带宽。

  • carlos66 2020-04-29

    @614: 问题重现的流程是这样,

    1. 客户端A与客户端B 发送同个消息到服务端,例如 A 在9:10 发送消息,B在9:10发送消息,加大客户端数量或者图片质量可能会有出现这样的情况,A在9:10发送消息,B在9:13发送消息
      2.服务端接收到消息后进行了解析信息,转发到相对应的class处理,处理的第一步是转发到web端(不含图片),第二部是将里面的信息丢到mq中(将图片保存到数据库),然后发送响应消息给到客户端。服务端并没有分析出有哪些地方有阻塞的可能。
年代过于久远,无法发表回答
🔝