|JRE6 Version||Java 1.6.30|
|JRE8 Version||Java 1.8.91|
|# of Servers in Load Balance||4|
|Windows OS||Windows 2008 Server R2 Standard|
|Cores per server||4|
|RAM per server||24 GB|
|Application Share Tech||Citrix XenApp|
|How applications launched||"C:\Program Files (x86)\Java\jre8\bin\javaws.exe" http://host/app/app_citrix.jnlp|
I recently joined a team that launches 2 java applications using the JNLP Web launcher. These applications were launched from a Citrix cluster spread across 4 Windows 2008 servers. We attempted an upgrade from JRE6 to JRE8. Running JRE6, the 4 Windows servers could handle 20 - 30 individual user application sessions per server and average about 60 - 80% CPU usage per server.
However, when we upgraded to JRE8, we suddenly saw the CPU spike to 100% after only 6 user sessions per box which caused massive performance degradation.
What we noticed
We noticed that with JRE6, javaws.exe would launch javaw.exe, and then future CPU usage stayed low throughout the application usage. However, with JRE8, javaws.exe would launch jp2launcher.exe, and the CPU would remain high (around 20 - 25%) while the individual was using the application. We're taking the next steps to see if there are individual libraries in these applications that cause the high CPU usage, but wanted to check with the community to see if this changed behavior using jp2launcher.exe would have unnecessary overhead that javaw.exe does not.