内存消耗大的 servlet 导致 Tomcat 崩溃

内存消耗大的 servlet 导致 Tomcat 崩溃

我有一台 Tomcat 服务器,它为许多 webapp 提供服务,每个 webapp 都有许多 servlet。有时,一个 webapp 的单个 servlet 内存不足,然后整个 Tomcat 会崩溃,并出现 Java“内存不足”错误,我不得不重新启动它。

有没有办法隔离 servlet,以便当它内存耗尽时,不会导致所有其他应用程序崩溃?

我目前在 Windows 上运行 Tomcat 7,但我可能很快就会转到 Linux,因此欢迎针对这两个平台的答案。

答案1

没有。您必须:

  1. 不要让它消耗太多内存
  2. 给 Tomcat 更多的内存,或者
  3. 将其安装在 Tomcat 自己的实例中,这样当它崩溃时,它不会带走您的其他 web 应用程序。

答案2

在 Linux 中,我看到 OOM 消息“通常”,我再次强调“通常”指向更大的内存大小。这意味着要么增加 RAM,要么获得更大的交换空间。首选第一个选项。

系统架构也很重要,但据我所知,这通常是工作负载大小的问题。这意味着运行更少的应用程序或产生更少的负载或获取更大的内存。

相关内容