caching - Grails/Tomcat : Avoiding denial of service attacks

标签 caching tomcat grails denial-of-service

我有一个在 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/

相关文章:

java - ServletContextListener 严重 : Error configuring application listener of class marktest. 配置

java - 构建 netbeans web 项目并包含 webserver

css - Grails:图像/CSS 不时丢失

java - 如何在grails中运行java程序?

php - 拉维尔 5.1 : Class cache does not exist

java - 如何检查(调试)JPA 查询是否从缓存或数据库获取结果

java - Tomcat 在从 jenkins 执行 shell 重新启动后停止

mysql - grails/mysql 时区更改

android - Activity返回后缓存为空

javascript - Chrome 安装 Service Worker addAll 无法获取