BOE XI R3 - 64bit OS - Deployment Strategy?
What is our deployment strategy for XI R3 (32 bit application) on 64 bit OS?
Let say I have a server with 8 CPUs and 32 Gig of RAM with Windows 64 bit installed.
1 - Install Java 64 bit or Java 32 bit?
2 - Install App server 64 bit or App server 32 bit?
3 - Deploy war files on 64 bit app server or 32 bit app server?
4 - Deploy BOE using path for 64 bit Java or 32 bit Java?
5 - Scale the number of processes to take advantage of the full address space.?
(In this example, I would deploy (4Gig memory * 8 BOE processes = 32 bit address space).
a - Deploy 8 Tomcat processes (32 bit Java / 32 bit App server).
b - Deploy our war files on the 8 app servers processes (and cluster app servers).
c - Deploy 8 BOE processing services.
In 64-bit Windows, the memory address space is 16 TB. 8TB for user programs and 8TB for the operating system. 32-bit programs running in 64-bit Windows run in the WOW64 subsystem. Each 32-bit program is assigned a 4 GB virtual memory address space in the WOW64 subsystem - with no requirement for the OS which is still running in the 8 TB of virtual memory address space it gets.
So, if your 32-bit program is written to take advantage of >2GB of memory (using the LARGEMEMORYADDRESSAWARE compiler switch), it will automatically see a full 4GB.
I think for a big deployment with a lot of concurent users, having a 64 bits web app server (running on a 64 bits JVM) could be interesting, but it must be known that:
- garbage collections will need more time, as more memory will be used
- the JVM itself will use more memory, as, for example, all stored memory addresses will be twice as big
- on the good side, all computation by the CPU will run much faster as it will fully use the 64 bits hardware
Anyway one simple recommendation would be to:
- run the Infoview web app in a 64 bits JVM, as it is were most users will go
- but run the CMC in a separate 32 bits JVM and webapp, thus if the system hangs or the main web app server is unreachable, we've got this independent admin web app available, I think this recommendation should be made for all deployments, particularly for XIr3 where a lot of admin stuff is feasible only from the CMC.
In my opinion, running Java webapps or application in a 64 bits JVM makes sense only when we reach the infamous 2 Gig heap limit, or if we need a lot of computation optimized (this last point is not really the case for our Java apps, computation is handled by back end native servers).