我正在开发一个项目,该项目有一个发布者和一个订阅者,通过常规TCP套接字连接进行连接。发布者以特定速率生成消息,通过套接字发送消息,然后订阅者处理消息。没有消息队列,只是纯TCP套接字连接。
问题是发布者中的套接字“写入”方法在调用时似乎需要很长时间,这会降低发布者发送数据的速度。
我一直在对套接字进行一些阅读,并且可以想到可能导致这种情况的两种情况:
网络速度不足以处理发送邮件发送速率。在这种情况下,我认为应该填写发布者的套接字出站缓冲区。
消费者对消息的处理速度很慢,因此我希望消费者的入站缓冲区已满。这将(据我所知)导致套接字写入方法阻止。
我还在学习套接字编程,我不确定上面的分析是否有意义。如果是这样,那么确定哪种情况可能是一种好方法呢?需要注意的一点是消费者在Linux机器上,但发布者是Windows机器。任何帮助,将不胜感激!
答案 0 :(得分:-1)
您可以衡量接收方在read()
或recv()
方法中花费的时间,或者调用从网络中读取的内容。
如果它很少,总会有数据存储,所以接收器的读取速度很慢是错误的。
如果读取中被阻止的时间很长,那么网络运行缓慢是错误的。