Wie stellen Sie sicher, dass Tomcat6 liest CATALINA_OPTS auf Windows?
Ich habe einen Tomcat6 läuft auf einem Windows2003-Maschine.
Ich bereitgestellt 2 Grails-Anwendungen auf diesem server und ich merkte schnell, dass alles stürzt ab, irgendwann nach dem bereitstellen mit einem klassischen PermGen-Fehler.
java.lang.OutOfMemoryError: PermGen space
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
java.lang.ClassLoader.defineClass(ClassLoader.java:616)
org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.de
...
So fand ich eine Allgemeine Lösung für dieses problem: erhöhen heap und permgen space mit:
set CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m"
Hinzugefügt C:\apache-tomcat-6.0.26\bin\catalina.bat.
Leider das hat nicht funktioniert, aber das problem ist, dass ich nicht sicher bin, dass Tomcat aufnehmen. Ich überprüfte die verschiedenen Protokolle, aber diese Optionen werden nie ausgedruckt.
Gibt es eine Möglichkeit, protokollieren Sie und stellen Sie sicher, dass Tomcat gelesen hat?
EDIT: ich habe versucht, fügen Sie die folgenden JVM-Optionen mit tomcat6w.exe:
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
-XX:+UseConcMarkSweepGC
Und nichts verändert. Ich bekomme eine permGen nach 2-3 Minuten Betriebszeit.
Jede andere Idee?
Prost!
Mulone
Guter Punkt: C:\Program Files\Java\jdk1.6.0_19\jre\bin\server\jvm.dll
Diese Art der Frage ist für serverfault.com, denke ich.
Tomcat-Entwickler empfehlen, um Ihre Anpassungen zu trennen. Verwenden Sie "%CATALINA_BASE%\bin\setenv.bat" - Datei für die Einstellung der Variablen, anstatt Sie zu ändern innen "catalina.Fledermaus".
InformationsquelleAutor Mulone | 2010-08-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Danke an Euch alle!
Ich endlich das Problem gelöst, indem Sie hinzufügen:
Den java-Optionen auf tomcat6w.exe.
Dank!
InformationsquelleAutor Mulone
Eigentliche Weg, es zu tun (in Catalina.bat),
fügen Sie diese Zeile in eine solche position, so dass diese JAVA_OPTS ist, übertragen werden, um jede der _EXECJAVA-Befehl am Ende der Datei (if-else verschachtelt). Ich persönlich Schreibe diese Zeile als erste Anweisung dieser charge
InformationsquelleAutor Abhishek Chatterjee
Ich eigentlich diejenigen, die als JAVA_OPTS für meinen JVM, bevor der server gestartet
InformationsquelleAutor Aaron Saunders
Schauen, wo Sie es verwenden
echo [statements]
zu beheben, versuchen Sie, es richtig, bevor Ihr an die VM, so etwas wie:Stellen Sie sicher, dass Sie das Recht haben
EXEC_JAVA
nicht sicher sind, welche version des.bat
- Datei Sie haben, aber wahrscheinlich mehrereif
Aussagen.Auch sicherzustellen, dass diese gültig sind Argumente für deine VM.
Können Sie Ihre max-heap-Größe in Ihrem java-code verwenden:
Nur drucken Sie es aus, wenn es richtig ist, basierend auf Ihren Einstellungen, haben Sie einen schlechten Speicherverlust, wenn nicht, dann
tomcat
ist nicht Kommissionierung es.InformationsquelleAutor Joelio