我们使用Grails 2.0.1和MongoDB构建了一个应用程序。随着我们的用户群不断增长并且我们进行了一些性能研究,我们注意到对于每个典型的请求,grails会占用大约150Mb的RAM,而当RAM即将达到最大值时,它会执行GC。 我们为控制器设置了单例模式,为服务设置了非事务模式。我们使用JRockit。
我想知道grails app是否可以被认为是正常的。我们的网站只不过是一个通常的网站,没有额外的内存使用,只是一个用户管理系统,代码本身似乎没问题。
以下是我们使用的插件:
app.grails.version=2.0.1,
app.servlet.version=2.4,
app.version=0.1,
plugins.cache-headers=1.1.3,
plugins.code-coverage=1.2.5,
plugins.codenarc=0.12,
plugins.crypto=2.0,
plugins.gsp-arse=1.3
plugins.jaxrs=0.6,
plugins.mongodb=1.0.0.RC5,
plugins.navigation=1.2,
plugins.quartz=0.4.2,
plugins.redis=1.0.0.M9,
plugins.rendering=0.4.3,
plugins.selenium=0.8,
plugins.selenium-rc=1.0.2,
plugins.spring-security-core=1.2.7.2,
plugins.springcache=1.3.1,
plugins.svn=1.0.1,
plugins.tomcat=2.0.1,
plugins.ui-performance=1.2.2
答案 0 :(得分:1)
在Sun JDK上,启动jvisualvm(或jrockit等效项,如果有的话。否则让自己适合使用jrockit的探查器),将其附加到正在运行的服务器,启动探查器并分析输出。这将让您了解在哪里看。
也许您实际上正在从后端存储中加载那么多信息。但这只是猜测。