Java Web Application Performance i Windows 2003 vs Windows 2008

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en Java Web/SIP-applikation, der kører på Tomcat. Applikationen blev dimensioneret til at køre på Windows 2003 til 1000 samtidige sessioner med 4 GB RAM og 4 VCPU i et virtualiseret miljø.


Nu er applikationen migreret til Windows 2008, Tomcat er stadig 32 bit og applikationen er kompileret med 32 bit Java, så er 32 bit applikation. Med denne opsætning min 2008 perf. testen virker ikke ens, som den bruger til at arbejde sammen med Windows 2003. CPU-udnyttelsen er toppet, og mange opkald bliver tabt.


Jeg har følgende spørgsmål her.



  1. Er der 32-bit applikation i et 64-miljø, skal du tage ekstra CPU/hukommelse, hvilket skaber problem her.

  2. Er der en præstationsforskel mellem Win 2003 og Win 2008.

  3. Skal Windows 2008 på grund af 64 bit-miljø kræve, at mere CPU sammenlignes med 2003.


Bedste reference


Vi havde en lignende situation engang tilbage, og vi forsøgte at flytte en 32 bit app (Tomcat baseret J2EE app) til 64 bit maskine. Vi observerer konsekvenser som du står overfor.


BTW, du har ikke nævnt hvorfor du flyttede til 64 bit OS :).


Lad os tage dine spørgsmål en efter en


Er der 32-bit applikation i et 64-miljø, skal du tage ekstra CPU/hukommelse, hvilket skaber problem her.


Generelt ja. Men det afhænger også af din processor arkitektur. For at forstå dette skal du se på, hvordan Windows kører 32 bit applikation på en 64 bit maskine. Der er et delsystem inden for 64 bit OS kaldet WoW64 (Windows 32-bit på Windows 64-bit) [1]


Primært er der to måder WoW64 gør det



  1. Emulere en 32-bit instruktion. Dette computationally meget dyrt og sandsynligvis er årsagen til CPU brug spike. Dette er generelt tilfældet, når det bruges sammen med Intel Itanium (IA-64) -baserede processorer.

  2. Skift processor til 32 bit-tilstand fra 64 bit-tilstand. Her skal hver gang en 32 bit applikationstråd udføres, processoren skiftes til 32-tilstand (kompatibilitetstilstand) og derefter skifte tilbage til 64 bit-tilstand. Dette er relativt hurtigere end tidligere emuleringsmekanisme.



Er der en præstationsforskel mellem Win 2003 og Win 2008.


Dette er meget subjektivt. Det afhænger af hvilken hardware du bruger. Selvom du har 64 bit OS og hardware, afhænger meget af den type hardware, bundkort CPU osv. 64 Bit OS er designet til at udnytte overlegen hardware , som en 32 bit OS og maskine ikke kan i kraft af begrænsninger som adressering plads osv.


Skal Windows 2008 på grund af 64 bit miljø kræve mere CPU sammenlignet med 2003.


Ja. som @ EJP nævnt ovenfor, har det flere ting at tilbyde. Et mere dygtigt OS ville have brug for overlegen hardware. Det kan være tilfældet, at din særlige applikation muligvis behøver nogen Win 2008-specifikke funktioner. Det er grunden til at du skal ringe til hvorfor du skal flytte til 64 bit fra 32 bit. Her er lignende indlæg på samme forum. [2]


BTW Jeg er ikke sikker på, om du har en mulighed, men du kan køre den samme kode uden at genopbygge (hvis du ikke bruger nogen platformspecifikke biblioteker) på 64 bit Tomcat.

Andre referencer 1



  1. Ikke særlig.

  2. Ja. Nogle gange er det meget vigtigt. Jeg ser alle slags forsinkelser i programmer, der plejede at arbejde ved kædehastighed.

  3. Ja, men ikke på grund af 64 bit, bare fordi der er mere i det.


Andre referencer 2


Jeg tror, ​​at din tidligere installation af SIP app og Java blev optimeret, mens den nye endnu ikke er.
Der er ingen præstationsforskelle for netværk og java mellem seneste SP for Windows 2003 og seneste SP for 2008 (Vista-baseret), men Win 2008 R2 er hurtigere med java på grund af mere intelligent CPU-affinitet, som selv fungerer i en VM.
I grund og grund ville jeg kigge på din java, sørg for at du kører 64bit java, hvis du kan, at den kører med '-server' -knappen, og at du skraldsamler har indstillinger f.eks. -XX: + UseConcMarkSweepGC -XX: + UseParNewGC -XX: NewSize=128m, også tjek java opsæt sæt JAVA\_OPTS=-Xmx3000M
-server.


Sørg også for at du kører den nyeste java-version, du har opdateret Windows til dit system, herunder drivere, og du har opdateret visualiseringssoftware, BIOS, BMC samt firmware til firmware.


Og i slutningen skal du bare tjekke projektlederen, hvis det virkelig er java, at din LAN-forbindelse (ping) ikke taber pakker, og at du har strømstyring i maskinens bios.


Jeg vil anbefale dig at opgradere til Win 2008 R2 - win 7 baseret.


Hvis du bruger offentlig sky, er dette muligvis ikke problemet med indstillingerne, men simpelthen sky serveren deler CPU med en anden virtuel server, så din app sidder fast.