我在 Debian 8 上遇到了 tomcat 7 的默认配置问题。
问题:由于 Java 进程,我的服务器 CPU 突然达到 100%,并持续数小时,导致服务器运行缓慢。如果我重新启动 Tomcat 服务器,CPU 又会降到 1%。几个小时后,问题再次出现。
Java 应用程序状态:tomcat 上没有安装自定义 java 应用程序,所以这可能是 tomcat 问题。
日志:观察 catalina.out 时,我发现此错误消息与 cpu pitch start 相对应
2017 年 1 月 19 日 上午 1:03:23 org.apache.coyote.http11.AbstractHttp11Processor 进程信息:解析 HTTP 请求标头时出错
如何复制:服务器重启后,我尝试通过 Web 浏览器访问此 URL,使用 https 访问 tomcat 服务器主页
瞧瞧,CPU 开始疯狂运行,我得到的日志和以前一样。
这意味着什么:这意味着任何有特殊请求的人都可以对我的服务器进行 DDOS
问题:有没有办法可以解决这个问题,而无需更改我的 Linux 发行版或 apt 使用的 tomcat 打包版本?
我正在使用来自 Google Compute Engine 的全新 debian 8 默认映像。tomcat 7.0.56 Java 1.7.0_111
答案1
我在 Debian 8,tomca7.0.56 中遇到了完全相同的问题。
对于我来说,升级到反向移植版本解决了这个问题。我将 tomcat7、tomcat7-common、libtomcat7-java 和 libservlet3.0-java 升级到版本 =7.0.73-1~bpo8+1(像这样:apt-get install tomcat7=7.0.73-1~bpo8+1)
我认为 Debian 8 中当前版本的 tomcat 7.0.56 存在严重的安全问题。在标准配置下,每个简单调用 https://domain.tld:8080 的人都会导致 CPU 扩展到 100%,直到您重新启动 tomcat!
答案2
简而言之,申请科学的方法。
- 找出正在监听端口 8080 的内容。
- 了解其配置方式。
- 了解它在做什么。
- 采取适当行动
答案3
我遇到了完全相同的问题,并且系统配置也完全相同。当我重新启动服务器时,它会在一两天内正常,然后 tomcat7 再次占用大约 99% 的 CPU。
这次我这样做了:
服务 tomcat7 停止
它对我来说仍然有效。正如您所说,我不使用 Java,所以对我来说没问题。