TCP/IP应用程序Keepalive大小和带宽开销

cor*_*iKa 3 java sockets performance tcp

我正在写一个Java服务器(java.net.Socket,java.net.ServerSocket,java.io.ObjectOutputStream,java.io.ObjectInputStream),我知道我将不得不为它分配有限的带宽.

我为输出和输入流编写了一个装饰器对象,因此我可以计算通过它的多少字节用于分析目的.但这不会给我任何关于我用于连接的开销量的指示.

我不认为它会有多大,但我想为它做好准备.我不打算尝试对其进行优化,我只是想知道出于后勤原因会有多少(我必须要求多少带宽等)

我不能成为第一个尝试获取此信息的人,但我似乎无法在Java套接字和TCP/IP的开销上找到很好的资源.(或许是因为没有什么值得一提的找到的......如果我们每分钟KB的量级上,这真的没有太大的关注,但我还是想知道!)

谢谢!

Mik*_*ton 5

这个问题很难回答我们现在掌握的信息......例如,你称之为"开销"的是什么?是否只有TCP ACK数据包,或者除了数据有效负载之外的所有数据包开销(例如以太网,IP和tcp标头)?

每分钟有多少连接?每个连接的平均数据传输是多少?如果存在许多非常短暂的连接,则您的开销要求会上升(由于3次握手和连接关闭要求)...如果客户端不读取大量数据,您可能也会有很高的开销,但是很多客户端保持连接一次打开几天.

老实说,你在实验室中对这个进行建模并且对每分钟命中率和并发客户进行一些假设会有50倍的好处......这会给你一些大概的数字.将限制提供给应用程序的带宽限制在您的预算允许的最大值...然后开始退出...您可以通过在双端口Linux机器上使用wanem来限制带宽.

像这样获得实验室结果远比理论计算好.

HTH,\ mike(谁花了一整天测试网络设备)