2

現在、Tomcat 6でのGrailsアプリケーションのデプロイでさまざまな問題が発生しています。主に、メモリ使用量の問題とJenkinsを介した再デプロイに関するものです。

アプリケーションはますます多くのメモリを消費し、CMSPermGenSweepingEnabled(UseConcMarkSweepGCを使用)を使用してこれを解決しようとしたため、Groovyが使用する一時クラスをクリーンアップする必要があります。

まだ問題なのは、(jenkinsを使用して)再デプロイするたびに、アプリに約150 mbの追加のPermgenスペースが必要になることです...これを回避する方法はありますか?

Grail 1.3.7を使用しており、現在の構成フラグは次のとおりです。

-Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties
-Djava.awt.headless=true
-Xms2048M
-Xmx2048M
-XX:MaxPermSize=1024m
-XX:PermSize=1024m
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
-XX:+UseConcMarkSweepGC
-Djava.net.preferIPv4Stack=true
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.endorsed.dirs=/usr/share/tomcat6/endorsed
-Dcatalina.base=/var/lib/tomcat6
-Dcatalina.home=/usr/share/tomcat6
-Djava.io.tmpdir=/tmp/tomcat6-tmp
4

2 に答える 2

1

これは非常に人気のある tomcat の問題であり、いくつかの推奨事項もあります: http://wiki.apache.org/tomcat/OutOfMemoryですが、ほとんどの場合、小規模または完全に制御されたプロジェクト (「外部ライブラリのないプロジェクト」を意味します) でのみ機能します。私が今まで見たすべての堅実なプロジェクトは、このエラーでTomcatの下で失敗します:(

私の推奨事項 - デプロイ後に Tomcat インスタンスを再起動します。

于 2012-02-22T16:08:34.390 に答える
0

Tomcat 上の Grails アプリケーションでも同様の問題が発生しました。私たちの解決策は、Igor が提案するものと同じで、デプロイ後に Tomcat を再起動します。

クラスター内に 2 つの運用サーバーをセットアップして、セッションを共有しています。1 つのサーバーを停止し、アプリケーションをアンデプロイし、Tomcat を再起動して、アプリケーションの新しいバージョンをデプロイし、そのサーバーを元に戻します。次に、他のサーバーでプロセスを繰り返します。これまでのところ、これは私たちのために働いています。

于 2012-02-22T17:13:27.133 に答える