我有一个Web服务端点,我正在build立人们将发布一个XML文件,它会真正得到冲击超过1K每秒的请求。
现在他们通过http post发送这些xml文件,但其中绝大多数会受到限制。
问题是,速度限制将由Web应用程序通过查找xml中的source_id来完成,如果超过每分钟x个请求,则不会进一步处理。
我想知道是否可以在处理的早些时候进行速率限制检查,从而保存了50K文件,将stream水线扔到我的networking服务器,并耗尽资源。
负载均衡器能否发出呼叫来validation费率使用情况?
如果这是可能的,我可以把source_id放在主机头文件中,这样即使XML文件也不必被parsing并加载到内存中。
是否有可能只看主机头,不加载整个50K的XML文件到内存?
我真的很感谢你的见解,因为这需要更多的关于整个TCP / IP协议栈的知识。
有两种基本types的可能性:
1)你正在处理那些不会与你的devise合作的敌对攻击者。 在这种情况下,你为什么关心他们发送的Host
头? 限制他们的IP。
2)你正在处理那些比你想要的负担更重的合作客户。 在这种情况下,只需接受请求并发送回复,告诉他们退款。
如果你有一个更复杂的情况不属于这两个简单的类别之一,最好的解决scheme可能取决于这种情况。
你可以通过类似模块的Apache来阻止它。 或者如果你想更早地将其切掉,你可以使用iptablesstring匹配通过正则expression式来阻塞事物。
这是tc命令/实用程序的用处 – 需要一点努力,但这是值得的。 我使用它来限制传输到我们企业局域网的DMZ中的服务器。
这里有几个链接,让我走上正轨…
Tcfilter – 端口范围计算掩码值: http : //mailman.ds9a.nl/pipermail/lartc/2007q4/021739.html
限制单个主机或networking掩码的速率: http : //lartc.org/howto/lartc.ratelimit.single.html