Große Permgen-Größe + Leistung auswirken
Sind wir mit einem liferay-portal-tomcat-6. Jedes portlet ist eine eigenständige web-Anwendung, so dass es enthält alle Bibliotheken, die das portlet selbst erfordert. Wir haben derzeit 30+ portlets. Die Folge ist, dass der permgen unserer tomcat steigt mit jedem portlet wir bereitstellen.
Nun haben wir zwei Wege die wir Folgen können.
Entweder bewegen sich einige der Bibliotheken, die commenly, die von jedem unserer portlets, tomcat shared library. Dazu gehören Sachen wie spring/hibernate/cxf/.... zu verringern unsere permgen Größe
Oder einfacher wäre es, erhöhen Sie den permgen-Größe.
Diese zweite option würde uns erlauben, zu halten, jedes portlet als eine in sich geschlossene Einheit.
Die Frage ist jetzt, gibt es keine negativen Auswirkungen auf die Leistung aus erhöhen Sie den permgen-Größe? Wir sind derzeit bei 512 MB.
Ich fand wenig bis gar keine Informationen über diese. Fand aber einige post wurden Leute reden, laufen auf 1024MB permgen Größe ohne Probleme.
- Ich würde nicht erwarten, dass eine 1-GB-PermGen ein problem verursachen.
- Verwandte Frage : stackoverflow.com/q/9636328/1140748
- Dies beantwortet nicht deine Frage, aber fügt ein anderer Aspekt: ich halte die Entscheidung, 1 portlet-pro plugin eine künstliche Einschränkung. Mit der Anzahl der portlets, die Sie geben, ich Wette, es gibt einige Verwandte, denen würde ich empfehlen, zu prüfen, Verpackung verwandten zusammen. Dieser kümmert sich um Ihre Schmerzen und IMHO erhöhen, die übersicht über deine plugins.
- Wir haben bereits zusammengefasst, einige von Ihnen, das größte problem mit dem ändern ist es jetzt, dass Liferay hält Verweise auf die Anwendung im Kontext es ist portlet-Konfiguration. Wenn wir also ändern, wie die portlets sind gruppiert pro webapplication Kontext, wir brechen einige der aktuell implementierten portlets.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Solange Sie genügend Speicherplatz auf dem server, ich kann mir nicht vorstellen, alles, was schief gehen kann. Wenn Sie nicht, na ja, der Tomcat gar nicht starten, wahrscheinlich, weil es nicht in der Lage sein, um ausreichend Speicher zuzuweisen. Also, wenn es nicht zu starten, bis Sie gut sind. So weit meine Erfahrung geht, 1GB PermGen ist perfekt Klang.
Den Nachteil einer großen PermGen ist, dass es lässt Sie mit weniger Arbeitsspeicher können Sie dann reservieren Sie für den heap (Xmx).
Auf der anderen Seite, ich würd dir raten zu überdenken, die Vorteile des Denkens von portlets als eigenständige Entitäten. Zum Beispiel:
lib/ext
libs zu Portletslib
Bibliotheken ist nur eine Frage der änderung der Abhängigkeiten Umfang (dies kann mehr lästig mit portal-libs); soweit ich mich erinnere, Liferay-SDK macht es auch leicht zu einem ähnlichen switch mit ant zu einem ähnlichen Schalter im Handumdrehen durch zusätzliche ant-Aufgabe zu lösen, die Abhängigkeiten und löschen von Portletslib
als erforderlichPermGen-Speicher kann die garbage Collection durch voller Sammlungen, so erhöht es möglicherweise erhöhen die Menge der GC-Zeit, wenn eine vollständige Sammlung erfolgt.
Diese Sammlungen sollten nicht zu Häufig statt, obwohl, und würde in der Regel immer noch weniger als eine Sekunde, um die volle GC 1GB von permgen-Speicher - ich bin so ziehen sich diese Zahl aus (meine etwas diesig) Speicher, so dass, wenn Sie wirklich besorgt über GC-Zeiten, um einige timing-tests selbst (verwenden Sie
-verbose:gc
und Lesen Sie die Protokolle, mehr details hier)Permgen Größe liegt außerhalb der ALTEN Gen - also bitte nicht Durcheinander .
Vereinbart wurde auf der 2. Punkt - wir erhöhen die permsize so viel wie wir tun können - als Arbeitsspeicher ist ziemlich Billig, aber das wirft einige Frage auf, wie wir verwalten unseren code. warum zum Teufel brauchen wir so viel von perm -JTa verbrauchen, dass viel - wie viele Klassen wir laden ? Wie viele Datei-Deskriptoren, die app öffnen ( überprüfen Sie mit dem Befehl lsof) .
Wir sollten versuchen, Sie zu beantworten.