we have CF11 version 11,0,7,296330
64 bit version installed on Windows 12 R2
16 gigs memeory
Tomcat version 188.8.131.52
java version 1.7
JVM Settings Min Heap size 512 mb. Max heap size 2048 mb
this is strictly a CF server
our applications are running slow.
the cpu is always extremly low maximum of 2 cpu's used. very low usage
Memory usage is extremly low as well. Memory usually doesn't go above 2 to 4 gigs.
what settings can i change on the server to have CF use all available resources to get the most performance for our server?
our Server group is wanting to take away resources because we are not using them.
we are experiencing CF lockups where we have to restart the CF application services because our systems are not responsive.
i have searched this forum and the web for CF 11 recommended settings for performance and have not found a good resource
You want to find out the reason for the lockups really. Looking at your spec, there is plenty of resource, especially if you see the usage is very low.
Do you connect to a database server? Could this be the thing causing lockups? Does the usage go up when the lockup occurs?
You can try increasing you max heaps. If you have 16gb in the server, why not set it to 4gb or even 8gb depending on what else is on the server.
CF is using Java and tomcat both of which can be searched for performance tuning.
Here are some things to consider. CF11 is using Java 8? The RTM installer deployed Java 7 which is Oracle EOL. The refreshed CF11 installer deployed Java 8 (1.8.0_15).
It can be useful sometimes to set minimum and maximum memory the same.
Java 8 parameter MaxMetaspaceSize=192m is fair to say small so increase that and define an initial setting.
There are other Java memory spaces in use so you can tune those to match your load better.
What values to use? Do some traditional Java monitoring to a log and read the log or enable JMX and use some JDK tools like jconsole.
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -verbose:gc -Xloggc:cfGC.log
-Dcom.sun.management.jmxremote.port=8709 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
Java manages objects with garbage collectors (GC). You could be experiencing a pause effect from GC routine. So perhaps try a newer or more modern garbage collector. For that you would remove -XX:+UseParallelGC.
Another idea for GC is to change to low pause. Ditto to remove -XX:+UseParallelGC.
Or stick with throughput GC -XX:+UseParallelGC but provide some tuning to it.
-XX:+UseParallelGC -XX:ParallelGCThreads=16 -XX:MinHeapFreeRatio=40 -XX:MaxHeapFreeRatio=70
The aforementioned G1GC and ConcMarkSweepGC also offer tuning settings, so search on those.
Sometimes Java 8 adaptive sizing does not suit the load after many GC cycles so you might like to manage the New part of heap (made up of Eden and 2 survivor spaces) by defining settings. Note not with G1GC.
-XX:NewSize=2048m -XX:MaxNewSize=2048m -XX:SurvivorRatio=6 -XX:TargetSurvivorRatio=100 -XX:-UseAdaptiveSizePolicy
Similarly tomcat offers performance settings by defining pool, thread size settings and timeout.
worker.cfusion.connection_pool_size = 400
worker.cfusion.connection_pool_timeout = 60
EG server.xml AJP section
maxThreads="400" minSpareThreads="100" connectionTimeout="60000"
Pardon me I just noticed you did mention CF11 running Java 7. I guess you have a good reason to be on Oracle end of life Java 7 and not be on current Java 8.
Since using Java 7 ignore what I said for Metaspace, CompressedClassSpaceSize and G1GC. Java 7 consumes PermSize, does not consume CompressedClassSpaceSize by default on 64 bit and G1GC was not official release until Java 8.
MaxPermSize=192m can be small so you may do well to adjust that and set an initial size.
Perhaps fair to say Java 7 adaptive sizing is a bit kinder on CF than Java 8 tho sometimes it can be good to define that on Java 7 as well.