因此,又有一天的调试,最后我有了解释。
1)SAEAS没有发射完整的活动,因为他们无法发送更多。 Wireshark揭示了这是由于TCP窗口清空。 (TCP Zerowindow)
2)TCP窗口正在排空,因为网络层正在将事件传递到堆栈中,该事件花费了太长时间才能完成,即网络层和UI之间没有生产者/消费者。因此,网络OP必须在发送ACK之前等待屏幕绘制。
3)花费太长时间的事件是在GUI上的活动处理程序中抽出的屏幕。测试钻机是一个控制台窗口(总结了传入消息的窗口),因此这就是为什么它不会在更高的负载下引起问题的原因。不用每条消息上的屏幕重新绘制是正常的,但这是因为项目尚未完成的,这是正常的。雷德率将在稍后固定。
4)短期解决方案仅仅是为了确保没有Guis举起演出。一个更强大的解决方案可能是在网络层创建生产者/消费者。