grails 2.0 - 在 Jetty 中运行,在 Tomcat 中运行

Posted

技术标签:

【中文标题】grails 2.0 - 在 Jetty 中运行,在 Tomcat 中运行【英文标题】:grails 2.0 - running in Jetty, running in Tomcat 【发布时间】:2012-02-29 14:01:30 【问题描述】:

我目前正在部署到使用 Tomcat 7 的 VPS,并且我看到很多关于部署最准系统 grails 应用程序的投诉,例如:

  SEVERE: The web application [/BareBones-0.1] appears to have started a thread named [Timer-1]  but has failed to stop it. This is very likely to create a memory leak.
  Feb 8, 2012 4:32:53 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
  SEVERE: The web application [/BareBones-0.1] appears to have started a thread named [H2 Log Writer PRODDB] but has failed to stop it. This is very likely to create a memory leak.
  Feb 8, 2012 4:32:53 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
  SEVERE: The web application [/BareBones-0.1] appears to have started a thread named [H2 Log Writer PRODDB] but has failed to stop it. This is very likely to create a memory leak.

此外,我经常在重新部署 WAR 文件时耗尽内存,即使我有 1GB 专用和 2GB Burst。例如。当我运行 Tomcat 停止命令时,我得到:

 java.lang.OutOfMemoryError: PermGen space

在车站。

所以,我想知道是否有人可以指点我是否可以在他们的经验中看到更少的 Jetty 问题。我的最终网络应用不会是一个非常大/流量很大的网站。

【问题讨论】:

【参考方案1】:

它是known Tomcat issue,经常发生(实际上我从未见过没有此类问题的应用程序)。这意味着您的应用程序有问题,或者(更常见的)您的应用程序正在使用的库有问题。有一个“众所周知的错误”列表 - http://wiki.apache.org/tomcat/OutOfMemory

顺便说一句,有时在部署时重启 Tomcat 比使用热部署要容易得多。

【讨论】:

我想我很惊讶在最简单的 (Grails) 应用程序中出现这些类型的错误。你知道 Jetty 与 Tomcat 相比如何吗? 是的,即使是简单的应用程序也会有这样的问题(而对我来说——这是 Tomcat 的错)。我只将 Jetty 用于开发,并且可以在那里推荐它,并且从未在生产中使用过 Jetty,但我听说它运行良好。 ...那么为什么人们会选择 Tomcat?因为它“更老、更成熟”? 嘿,好问题! :) 是的,我认为是因为它很古老,众所周知,在每本书中都提到过,等等。 谢谢,很好的参考。当然看起来人们投了很多票,因为他们同意答案(而不是它在详细信息方面的质量)。

以上是关于grails 2.0 - 在 Jetty 中运行,在 Tomcat 中运行的主要内容,如果未能解决你的问题,请参考以下文章

如何使 MySQL 在 grails 2.0 上运行

Grails 2.0 集成测试污染?

grails 2.0 <g:javascript> 不起作用

如何使 Grails Spring Security 2.0 中的登录/页面成为初始屏幕?

我应该在 grails 2.0 中使用哪个贝宝/支付插件?

Grails 2.2.0 mysql访问权限和权限