关于linux的Tcp java连接速率限制

时间:2012-02-01 22:10:49

标签: java tcp

我在VM(linux centos)上运行java服务器,其中包含4个内核和4Gb内存以及1Gb堆。这是我注意到的。

内存稳定,即堆积小于600Mb ......这是我的应用程序调整而不是太担心它。通过垃圾收集器统计我看到gc花费的平均时间小于.06秒

这是我的问题。

tcp_somaxconn = 1024
tcp_syn_backlog =1024
and tcp_syn_cookies is zero.

我看到的连接速率最高可达230个连接/秒,我看到侦听队列丢失。我已经验证我的服务器应用程序也接受230conn / sec的新连接。所以我不确定为什么我看到侦听队列下降超过230连接/秒。此外,CPU永远不会超过50%。感谢任何帮助...

此外,如果启用syn_cookies,行为也不会改变..

1 个答案:

答案 0 :(得分:1)

这很有趣......这里有一些提示:

  1. 您不应启用syn_cookies。你想要禁用它们,以便内核不会因为它认为你受到攻击而减慢速度。你可以通过查看内核日志(dmesg)来查看“端口上可能发生SYN泛滥......”之类的消息,在你确定一切正常后你可以再次启用它。

  2. 它是多线程应用程序吗?它真的可以扩展到所有核心吗?

  3. NIO可以帮助您获得更好的结果,因为它在“每个连接的线程”模型中不起作用。

  4. 在这种情况下,并行GC有时可以做得更好。