我有一个在 Tomcat 上运行的 Grails 应用程序,并使用 MySQL 作为数据库服务器。
我通过测试发现,只需多次刷新页面(即按住 F5)即可轻松在网站上发起拒绝服务攻击。这会导致服务器负载随着MySQL数据库连接数的增加而迅速增加。
最终,网站变得无响应,可能需要几分钟时间才能恢复正常。
有人可以推荐调试这个的方法吗?
我应该考虑缓存吗?
最佳答案
我不建议在 grails 层处理 DOS 攻击。我总是建议在 Java Web 应用程序前面放置一个像 nginx 或 apache 这样的服务器。然后可以将 Web 服务器配置为代理您的 Web 应用程序。 Web 服务器前面的防火墙创建了另一层安全性。如果您尝试在 Web 应用程序层解决 DOS 攻击,您很可能为时已晚。
有关 DOS 的快速引用如下:http://en.wikipedia.org/wiki/Denial-of-service_attack
顺便说一句,缓存并不是为了修复 DOS 攻击。其目的是提高应用程序性能。许多 DOS 攻击发生在套接字级别。
我再次建议不要在 Web 应用程序级别阻止 DOS。无论您使用哪种语言编写。
我的另一个问题是您是否对您的应用程序进行了负载测试?您可能会遇到基本性能问题。我建议您查看商业工具或基于网络的负载调整服务。我猜您实际上遇到的是自定义 Web 应用程序性能问题,而不是 DOS 问题。
关于caching - Grails/Tomcat : Avoiding denial of service attacks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15359221/