我有一个监听端口的服务器程序,我希望限制端口的传入TCP连接的总数。
我尝试了以下规则:
-A INPUT -p tcp --syn --match multiport --dports 443,4443 -m connlimit --connlimit-above 15000 --connlimit-saddr --connlimit-mask 0 -j DROP但是它将引入高CPU使用率的"ksoftirqd“和高数据包响应延迟。服务器的正常流量将有来自9000 ~ 11000个不同来源IP的14000 ~ 15000个连接。还有别的解决办法吗?
OS:版本7.5。
表: v1.4.21
发布于 2019-06-01 00:34:11
这并不奇怪您有一个性能问题,因为您现在要求系统花费大量的时间来计算连接,以确定是否有超过任意数量的连接,并且它必须在每个新的请求上这样做。(出于某种原因,你似乎建立了许多短暂的关系。如果可以的话,尽量避免。)
最终,如果您想要保持这种性能水平,您应该在服务器前面设置一个单独的防火墙,这样可以完成所有必要的连接跟踪,并允许您的服务器专注于为其应用程序服务。不过,这会带来一点延迟,所以如果应用程序对延迟非常敏感,那么您可能根本就没有任何好的解决方案。(除了让短命的连接更长寿以外。)
https://serverfault.com/questions/969727
复制相似问题