Skip to content

客户端和服务端添加接收方限流 #348

Closed
@someview

Description

@someview

tcp框架层次的限流 ->协程池->应用层次协议实现的限流. netpoll 等同于tcp框架 + 协程池 + other feature.
我们在基于netpoll来开发rpc框架的过程中, 压测的时候经常发现内存炸了. 原因在于,服务端或者客户端应用层处理不过来,然而这里有本身又缺乏一种背压机制.netpoll 一旦接收到新的数据,用空的协程或者放在tasklist里面等待执行,这相当于一种无穷大的机制.

然而, 底层的变更不能依赖应用层的变化,所以背压机制在这里显得不恰当.
更好的描述是, 层级式的需求,

  1. 应用, 应用特征
  2. 需要多高的并发,最多多高的并发,
  3. 对tcp框架,需要pps, 带宽是多少,最多允许每个连接上的任务占用多大内存.

按照这种思路,我认为netpoll应该添加限流功能, 以便能够控制,观察netpoll自身级别的资源使用状况.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions