String Pool Theory
Posted: Mon Oct 26, 2009 2:58 pm
Hi All.
Here in Sydney, we're having a little bit of trouble with an error 4024 - Out of Resources for Operation. Jade Support & the Jade Plant have been very helpful in reading our dumps and pointing out that it is our String Pool which is causing the problem.
That's nice, but we're unsure of the values to set it to, and how we go about calculating what is best for the system.
We can't just use our production system as a test environment, as the 4024 error causes the system to crash, and 350 users aren't too happy.
What we know is this:
Adjusting the StringPoolLimit and MethodCacheLimit along with the Min & MaxServerThreads all play a part.
(MethodCacheLimit + StringPoolLimit) x 2 = Interpreter cache size.
This is the amount of memory used by each thread on the server that has it's own interpreter cache. (MaxServerThreads)
So our current calculation is
(2,000,000 + 2,000,000) x2 = 8,000,000 x 100 = 800,000,000 - approx 800Mb.
But when we are compressing & uncompressing Binary files (usually Word docs of 250+Kb), during periods of high activity, the 4024 still occurs.
Jade Support have made 2 suggestions.
1. Reducing the number of ServerThreads
2. Going to a Single Pool, instead of a value for each Thread
But what are the pro's & con's of each?
Has anyone else had experience of this? Your advice or thoughts would be most welcome.
And does anyone know how to measure the StringPool that a method could/does use? The Profiler gives some info, but not enough.
We're kinda lost when it comes to memory management, especially as the machine is looked after by a different group of people, who also do our Jade Admin, but they generally don't know much and only do what we tell them to do.
Also RAM and CPU on the machine isn't a problem - we have plenty of each.
Thanks in advance.
- Hayden
Here in Sydney, we're having a little bit of trouble with an error 4024 - Out of Resources for Operation. Jade Support & the Jade Plant have been very helpful in reading our dumps and pointing out that it is our String Pool which is causing the problem.
That's nice, but we're unsure of the values to set it to, and how we go about calculating what is best for the system.
We can't just use our production system as a test environment, as the 4024 error causes the system to crash, and 350 users aren't too happy.
What we know is this:
Adjusting the StringPoolLimit and MethodCacheLimit along with the Min & MaxServerThreads all play a part.
(MethodCacheLimit + StringPoolLimit) x 2 = Interpreter cache size.
This is the amount of memory used by each thread on the server that has it's own interpreter cache. (MaxServerThreads)
So our current calculation is
(2,000,000 + 2,000,000) x2 = 8,000,000 x 100 = 800,000,000 - approx 800Mb.
But when we are compressing & uncompressing Binary files (usually Word docs of 250+Kb), during periods of high activity, the 4024 still occurs.
Jade Support have made 2 suggestions.
1. Reducing the number of ServerThreads
2. Going to a Single Pool, instead of a value for each Thread
But what are the pro's & con's of each?
Has anyone else had experience of this? Your advice or thoughts would be most welcome.
And does anyone know how to measure the StringPool that a method could/does use? The Profiler gives some info, but not enough.
We're kinda lost when it comes to memory management, especially as the machine is looked after by a different group of people, who also do our Jade Admin, but they generally don't know much and only do what we tell them to do.
Also RAM and CPU on the machine isn't a problem - we have plenty of each.
Thanks in advance.
- Hayden