Domanda

Sto usando un'applicazione ICEFaces che funziona su JBOSS, il mio heapsize attualmente è impostato su

-Xms1024m –Xmx1024m -XX: MaxPermSize = 256m

qual è il tuo consiglio per regolare i parametri di memoria per JBOSS AS 5 (5.0.1 GA) JVM 6?

È stato utile?

Soluzione

Secondo questo articolo :

  

AS 5 è noto per essere avido quando si tratta di PermGen . All'avvio, genera spesso OutOfMemoryException: errore PermGen .

Questo può essere particolarmente fastidioso durante lo sviluppo quando si esegue la distribuzione a caldo di frequente un'applicazione. In questo caso, JBoss QA consiglia di aumentare la dimensione del permgen, consentire lo scarico delle classi e lo sweep del permgen :

-XX:PermSize=512m -XX:MaxPermSize=1024 -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled

Ma questo è più FYI, non sto suggerendo di applicare questa configurazione alla cieca (come la gente ha scritto nei commenti, "se non è rotta, non aggiustarla").

Per quanto riguarda le dimensioni dell'heap, tieni sempre presente: più grande è l'heap, più lungo è il GC principale . Ora, quando dici "era decisamente troppo piccolo", non so davvero cosa significhi (quali errori, sintomi, ecc.). Per quanto ne sappia, un heap di 1024 m è in realtà piuttosto grande per una webapp e dovrebbe essere davvero più che sufficiente per la maggior parte di essi. Fai attenzione alla durata principale del GC.

Altri suggerimenti

Heap: inizia con 512 MB, imposta il limite su dove ritieni che la tua app non dovrebbe mai arrivare e non far iniziare lo scambio del tuo server.

Permgen: di solito è abbastanza stabile, una volta che l'app legge tutte le classi utilizzate nell'app. Se hai testato l'app e funziona con 256 MB, lasciala così.

@wds: non è sicuramente una buona idea impostare il massimo heap il più alto possibile per due motivi:

  1. I grandi cumuli richiedono più tempo per il GC completo. Se hai abilitato la scansione PermGen, anche un grande spazio PermGen impiegherà più tempo a GC.
  2. JBoss AS su Linux può lasciare le maniglie di I / O inutilizzate aperte abbastanza a lungo da consentire a Linux di pulirle forzatamente, bloccando tutti i processi sulla macchina fino al completamento (potrebbe richiedere più di 1 minuto!). Se si dimentica di disattivare lo scanner hot deploy, ciò accadrà molto più frequentemente.

Ciò accadrebbe forse una volta alla settimana nella mia domanda fino a quando:

  1. ridotto -Xms a un punto in cui l'avvio di JBoss AS stava iniziando a rallentare
  2. ridotto -Xmx a un punto in cui i GC completi si sono verificati più frequentemente, quindi la gestione degli I / O di Linux è stata interrotta

Per gli sviluppatori penso che sia giusto aumentare PermGen, ma in produzione probabilmente si desidera utilizzare solo ciò che è necessario per evitare lunghe pause GC.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top