1 person found this helpful
Hi, I can shed some light on some of your questions.
1) "I have read that max/min heap size should be EQUAL"
If you set your min heap size smaller than the max then it grows dynamically as needed, this growth at runtime can add some minor overhead while it is growing, which is why people recommend they are set equal. When they are set equal the heap doesn't have to worry about its size it just stays one size and allocates all the RAM upfront it will use in its lifetime.
2) "I have read that I should define a PermSize and MaxPermSize"
The perm size controls the permanent generation, this is where the jvm stores meta data about java classes, so once all your CFM templates have executed all possible logic branches at least once you would not expect the perm size to change after that (unless you are generating cfm files dynamically). Generally the perm size does not make any performance difference, but you can run out of perm gen space if you set it too low, then you will get exceptions thrown. Just run your server for a few days and then check the size and make sure it is high enough, it shouldn't grow much higher than the value you see after your apps have run for a while (ofcourse if you are adding lots of new cfm/cfc files it will increase). I have some more info about that here: http://www.petefreitag.com/item/821.cfm
Thanks, Pete. Below is a screen shot showing your code results at the bottom, with cfdump output above it from another old script I found. This is on our live, production machine, which has been up for weeks with pretty much everything "loaded" that I can think of. Is there anything here that jumps out at you, given the other settings I specified in the original post?
Edit: I see now that the original CFDUMP script I was using contains the same info as yours.
1 person found this helpful
Not to be missed in Java discussion is the possible impacts on performance on CF when full garbage collections are performed. A Java full garbage collection is a stop all process for the duration.
You have configured the Java with UseParallelGC which can be suitable in some usage or load tho impacts on performance in other situations.
To know how well the Java and garbage collection is working you would want to perform some logging or monitoring. Given you become aware of how that is working you can change settings then log again to know change was beneficial or not.
Logging can be performed via creating a Java log file and reading that or passing it thru a tool eg gcviewer to get a summary and graphical output.
Monitoring can be performed via adding JMX arguments to Java and using JDK tools like jconsole, jvisualvm or the new Java 7 mission control.
In CF10 how well the tomcat connector is working can also realise performance gains.
I did a couple of talks on Java matters and tomcat usage. Reply to thread if any of that interests you, then I will respond with a link to those.
Thanks for all the replies. Between this forum and the ColdFusion Facebook Group I have decided to make the min/max heap the same size, and about 1/2 that of the total available RAM on my system. I did not make any changes to my permsizes. I will continue to monitor, and research. I am also going to try some load testing/benchmarking for the first time to see what my limits really are. Thanks again. I will report back if I find anything interesting or relevant to this thread.