I realize memory usage patterns will be different for every application, but I thought it might be a good discussion to have.
We use a memory calculator that takes the total amount of memory available and number of users as an input, and outputs the memory settings to put in the ini file and a recommended number of App Servers. It assumes all of the App Servers will be on the same physical server as the DB Server.
The calculator uses a figure of 30 users per App Server based on some very old advice from Jade - what do you guys use? Does anyone have experience with larger numbers of users per App Server?
The calculator caps memory usage at 2GB because we're still using 32bit.
It leaves 1/4 of the memory free for use by the OS and other programs. That could probably be more intelligently calculated but it's hard to tell what the OS will need.
It calculates the amount of memory available for use by the DB Server using a ratio of 340 to 420. The ratios were calculated backwards from an example system we manually configured to be the way we wanted.
It divides the memory allocated to the DB Server into 59% for the PersistentDb ObjectCacheSizeLimit, 29% for the JadeServer ObjectCacheSizeLimit and 6% each for the JadeServer TransientCacheSizeLimit and RemoteTransientCacheSizeLimit. The ratios are set up so that the majority of the memory is to the PersistentDb ObjectCache on the principle of making the cache closest to the physical db the biggest. Next smallest is the JadeServer ObjectCache and then some left over for transient caches. Our server apps aren't usually as high priority as the thin clients, so we don't allocate too much memory to them.
It divides the memory allocated to each App Server into 24% for the JadeClient ObjectCacheSizeLimit, 5% for the JadeClient TransientCacheSizeLimit, 71% for the JadeInterpreter MethodCacheLimit (we use MethodCache=Single) and half the MethodCacheLimit for the StringPoolLimit so that Strings and Binaries never push all methods out of the cache.
So for an available memory of 2GB and up to 30 users, these are the memory settings the calculator recommends:
Does anyone have experience or advice that violently disagrees with our memory settings?1 CPUs or Cores are needed
[PersistentDb]
ObjectCacheSizeLimit=405M
[JadeServer]
ObjectCacheSizeLimit=199M
TransientCacheSizeLimit=41M
RemoteTransientCacheSizeLimit=41M
1 App Server(s), each with the following ini settings:
[JadeClient]
ObjectCacheSizeLimit=204M
TransientCacheSizeLimit=42M
[JadeInterpreter]
MethodCache=Single
MethodCacheLimit=603M
StringPoolLimit=302M