是否可以使用Netty限制服务器的全局或通道带宽?
我可以通过GlobalChannelTrafficShapingHandler设置显式读取或写入速率限制,但我试图将服务器的全局带宽限制为可用带宽的大约一半.因此,如果服务器可以以8MB/s的速度上传,我想将上传限制在大约4MB/s.我希望服务器随着可用带宽的变化而调整; 因此,如果服务器的上传速率降低到5MB/s(可能是由于其他应用程序的网络利用率),那么我想将速率限制为2.5MB/s.
我一直在玩OverRiding AbstractTrafficShapingHandler.submitWrite()并根据自上次调用以来的持续时间添加延迟,但逻辑看起来很脆弱且不可靠.
关于如何智能地解决这个问题的任何想法?
您是否考虑过使用GlobalTrafficShapingHandler并定期让它全速运转以找出服务器的最大带宽,然后将其限制为最大带宽的一半?
我会定期执行以下操作(按计划,可能每分钟1秒)
setReadLimit setWriteLimit您所允许的最大增加GlobalTrafficShapingHandlers TrafficCounter(通过public trafficCounter())通过调用来重置计数resetCumulativeTimeTrafficCounter.configure(long)GlobalTrafficShapingHandler以使用您刚刚计算的带宽的一半我认为以上内容应该可以为您提供想要的东西,而又不要太脆弱。