0

我们正在运行一个基于 Java 的交易应用程序,在某些时期,我们希望在大约 10 毫秒内尽可能地优先考虑传出网络流量。有没有办法在短时间内缓冲所有传入的网络流量,无论是在网卡上还是通过我们的 Redhat Linux 机器上的进程或缓冲区?

这背后的基本原理是,在同一时期,传入的网络流量达到峰值,并且处理此流量的应用程序正在从我们尝试优先处理的进程中窃取 CPU 周期。我们对处理传入网络流量的应用程序没有细粒度的控制。

我们的连接速度为 1 Gbps,因此大约 1 MB 的缓冲区就足够了。我们宁愿不要丢弃传入的流量并请求重新传输,因为这会在非常繁忙的时期增加我们网络的负载。

4

3 回答 3

2


可以在路由器上使用 Qos,或者通过以下示例配置使用涓流来控制带宽:

   /etc/trickled.conf.


请参阅 url 中的示例。

于 2015-01-08T00:10:19.977 回答
0

Adrian,您是否尝试过将传出通信进程的优先级设置为高于接收传入数据的进程的优先级?使用nice命令可以实现。请注意,在 Unix/Linux 中,数字越小优先级越高。

否则,如果没有两个正在发送/接收的应用程序之间的直接联系,我不确定这是可能的,这样您就可以有效地忽略准备读取的传入连接,直到您拥有的任何数据被发送出去。

于 2015-01-12T00:16:51.507 回答
0

我不确定我是否正确理解了您的问题。您的担忧是有时您优先处理输出网络流量,此时传入流量会增加,最终可能导致您不想要的包丢失或重新传输。因此,您希望缓冲传入的流量。

如果我的理解是正确的并且您正在使用 TCP,请尝试使您的 tcp 缓冲区更大。 http://kaivanov.blogspot.com/2010/09/linux-tcp-tuning.html然后使用netstat检查你的修改是否生效。

于 2015-01-08T18:44:17.623 回答