【问题标题】:Flow control in pushtechnology diffusion server delaying publishing client updates推送技术扩散服务器中的流控制延迟发布客户端更新
【发布时间】:2017-03-06 01:32:48
【问题描述】:

我们控制客户端每 2 秒通过不同主题的扩散向客户端发送 100 个更新,每个大小为 200-250 字节(2 秒内每个主题一个更新)。问题是在发送这些大约 20-30 分钟后,流量控制开始,并且由于流量控制,更新在 1-2 小时后从 5 毫秒延迟到 100 毫秒。有什么办法可以避免在扩散中发布 Control Client 的流量控制?

maxqueuesize 设置为 10000 扩散 api 日志:压力 = 0.04622500000000004 => 睡眠 4 毫秒

【问题讨论】:

    标签: flow-control push-diffusion


    【解决方案1】:

    Flow Control 在 v5.1 中被引入 Java 客户端,在 v5.5 中被引入 .NET 客户端。它的存在是为了防止内部队列溢出,否则会关闭客户端会话。这是一种暴露更深层潜在问题的症状。

    发生这种情况有几个原因:

    • 您的 Diffusion 服务器跟不上其工作负载。这种情况会在一段时间后发生,这让我想知道您的服务器 JVM 是否花费了太多时间来收集垃圾。 Java Missions Control 擅长回答这个问题。

    • 我们很少看到这会影响具有双重角色的控制客户端,例如创建和更新主题,以及对Missing Topic Notifications 等事件作出反应。流控制是许多因素的函数,包括队列饱和度和未满足请求的数量。如果是这种情况,请考虑每个角色的离散会话。

    考虑并探索第一种更简单的可能性,然后再转向第二种。如果问题仍然存在,请通过 support@pushtechnology.com 联系我们,

    马丁

    【讨论】:

    • 看起来是第二种情况,我在同一个Control客户端上创建了另一个扩散Session来发送更新,减少了流控问题。但是发送更新的延迟从 0 到 50 毫秒不等。由于我们有 30 个线程并行发送更新,这暂时不是问题。
    猜你喜欢
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 2023-03-22
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多