我们正在运行基于Java的交易应用程序,并且在某些时段我们希望尽可能地优先排出网络流量大约10毫秒。有没有办法在短时间内临时缓冲所有传入的网络流量,无论是在网卡上还是通过我们的Redhat Linux机器上的进程或缓冲区?
这背后的基本原理是在同一时期内传入的网络流量激增,处理此流量的应用程序正在从我们尝试优先处理的流程中窃取CPU周期。我们没有对处理传入网络流量的应用程序进行细粒度控制。
我们使用1 Gbps连接,因此大约1 MB的缓冲区就足够了。我们不希望丢弃传入流量并请求重新传输,因为这会在非常繁忙的时段增加我们网络的负载。
答案 0 :(得分:2)
答案 1 :(得分:0)
我不确定我是否正确理解你的问题。您关心的是,有时您优先处理输出网络流量,此时传入的流量将会累积,最终可能导致您不想要的包丢失或重新传输。因此,您希望缓冲传入的流量。
如果我的理解是正确的并且您正在使用TCP,请尝试使您的tcp缓冲区更大。 http://kaivanov.blogspot.com/2010/09/linux-tcp-tuning.html然后使用netstat检查您的更改是否有效。
答案 2 :(得分:0)
Adrian,您是否尝试将传出通信流程的优先级设置为高于接收传入数据的流程的优先级?使用nice
命令可以实现这一点。请注意,在Unix / Linux中,数字越低,优先级越高。
否则我不确定如果没有在发送/接收的两个应用程序之间直接联系,这是可能的,允许您有效地忽略准备读取的传入连接,直到您发送任何数据。