tuning

Lucrez la proiectul Business Intelligence. Execut aplicația BI (bazată pe servlet JSP) pe jboss-4.2.3.GA.

Cerința mea este să îmbunătățesc performanța aplicației prin reglarea parametrilor JBoss și a sistemului de operare .

Hardware: CPU Intel Q8400 Quad core 2,66 GHz, 4 GB RAM

Sistem de operare: Windows Server 2008 R2 64 BIT

JAVA: jdk1.6.0_20 64 BIT

Baza de date Aplicația mea nu folosește JBoss pentru a conecta baza de date

Folosesc un instrument de testare a încărcării de la terți pentru a măsura timpul de performanță al aplicației și am încercat cu opțiunile de mai jos. (Am atașat fișierul meu run_perfomance .bat)

rem JVM parametrii poolului de alocare a memoriei. Modificați după caz.
set JAVA_OPTS =% JAVA_OPTS% -Xms2816m -Xmx2816m

rem Cu Sun JVM, reduceți RMC GC la o dată pe oră
set JAVA_OPTS =% JAVA_OPTS% -Dsun.rmi.dgc.client.gcInterval = 900000 -Dsun.rmi.dgc.server.gcInterval = 900000 -XX: ParallelGCThreads = 8

set JAVA_OPTS =% JAVA_OPTS% -XX: PermSize = 512m -XX: MaxPermSize = 512m

Am început să lucrez la JBoss pentru implementarea aplicației mele pe serverele clienților. Poate cineva să mă ajute cu următoarele probleme ?

1) Cum sugerez dimensiunea JVM pentru (Xms și Xmx)? De obicei, sugerez 70% din memoria fizică

2) Cum să îmbunătățesc performanța aplicației, eliminând serviciile inutile JBoss și reglarea JBoss?

3) Cum pot preveni eroarea JBoss Out of Memory atunci când folosesc 50 de utilizatori simultani pentru încărcarea analizelor simple folosind aplicația mea.

4) Care ar putea fi cel mai bun mod de a verifica utilizarea JVM la vârf de utilizare a aplicației? (folosesc consola web JBoss)

5) Cum sugerez cerințe hardware minime și hardware recomandate (nu doar pentru rularea JBoss, ci pentru a rula aplicația fără probleme)?

6) cum pot găsi o strategie corectă de testare a sarcinii pentru a lucra la reglarea performanței .?

Ajutorul oricui este foarte apreciat. Învăț JBoss AS tunning .

1. Re: JBoss Tuning & Slimming pentru aplicația mea

Firele de colectare a gunoiului sunt legate de memorie - nu ar trebui să rulați niciodată mai multe fire GC decât aveți procesoare (sau nuclee). Deoarece aveți un sistem quad core, ar trebui să rulați 4 fire GC, nu 8.

1) Acest lucru depinde în totalitate de dimensiunea setului de lucru. Ceea ce este un mod fantezist de a spune că, având în vedere că fundul aplicației are multă nevoie, dar nu mai mult. Prea mult grămadă va provoca pauze GC inacceptabil de mari, o grămadă prea mică va provoca prea multe GC. Trebuie să găsești „locul dulce”. Faceți acest lucru, trebuie să analizați datele GC. Pentru sugestii despre cum să adunați datele GC și să le analizați, consultați aceste cărți albe:

Analiza statistică a colectării deșeurilor Java 101

Java Garbage Collection Performance Analysis 201

3) A se vedea răspunsul la numărul 1.

4) Vezi răspunsul la # 1. De asemenea, VisualVM este la îndemână pentru asta.

5) Nu sunt sigur ce întrebați. Dacă aveți nevoie de o grămadă mai mare de aproximativ 3 GB, ar trebui să adăugați mai mult RAM.

6) Ce teste de încărcare ați făcut? (Acesta este un subiect complet separat)

De asemenea, există o mulțime de recomandări în diferite postări din forumul Performance: http://community.jboss.org/en/jbossas/performance

2. Re: JBoss Tuning & Slimming pentru aplicația mea

Multe mulțumiri pentru răspunsul tău rapid, răspunsul tău a ajutat pe drum să lucrez la sarcinile mele de reglare.

Ne pare rău, nu am înțeles pe deplin ceea ce ai scris mai sus - Prea mult grămadă va provoca pauze GC inacceptabil de mari, o grămadă prea mică va provoca prea multe GC.
După cum înțeleg, dacă dimensiunea heap-ului este mai mică, GC va trebui să ruleze mai rar și va ocupa mai puține resurse de memorie în general.
Și dacă dimensiunea heap-ului este mai mare, GC va trebui să ruleze mai frecvent și va ocupa mai multe resurse de memorie în general.
Este corect? anunță-mă te rog.

Aproximativ 5:
Avem o aplicație de analiză de înaltă procesare care rulează pe serverul Jboss.
Numărul de utilizatori care utilizează aplicația poate fi de la 5 la 50 de utilizatori concurenți.
Trebuie să le recomand hardware, în funcție de numărul de utilizatori concurenți. Puteți da câteva indicii despre cum pot determina acest lucru ?

3. Re: JBoss Tuning & Slimming pentru aplicația mea

>> După cum înțeleg, dacă dimensiunea heap-ului este mai mică, GC va trebui să ruleze mai rar

O aplicație Java tipică generează o mulțime de gunoi în fiecare secundă (un GC minor tipic reține doar aproximativ 10-20% din obiectele din spațiul eden, restul sunt gunoi), deci o grămadă mai mică (sau spațiu eden) se va umple mai repede cu acel gunoi.

>> Trebuie să le recomand hardware, în funcție de numărul de utilizatori concurenți. Puteți da câteva indicii despre cum pot determina acest lucru ?

Utilizați un instrument de testare a încărcării, cum ar fi JMeter (gratuit, open source) sau LoadRunner ($$$$$$), creați un script care imită interacțiunile tipice ale utilizatorilor și rulați-l. Rezultatele din aceasta ar trebui să vă anunțe ce fel de hardware aveți nevoie. Rețineți că răspunsul la o astfel de întrebare depinde aproape în întregime de aplicația în cauză, deci nu există linii directoare generale pe care să le pot oferi.