Coldfusion 11 Performance settings

New Here ,
Jul 13, 2016 Jul 13, 2016

Copy link to clipboard

Copied

we have CF11 version 11,0,7,296330

64 bit version installed on Windows 12 R2

16 gigs memeory

virtual machine

8 cores

Tomcat version 7.0.64.0

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

thanks,

Mike

Views

2.1K

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Jul 13, 2016 Jul 13, 2016

Copy link to clipboard

Copied

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.

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guide ,
Jul 13, 2016 Jul 13, 2016

Copy link to clipboard

Copied

Hi Mike,

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.

-Xms6144m -Xmx6144m

Java 8 parameter MaxMetaspaceSize=192m is fair to say small so increase that and define an initial setting.

-XX:MetaspaceSize=312m -XX:MaxMetaspaceSize=640m

There are other Java memory spaces in use so you can tune those to match your load better.

-XX:ReservedCodeCacheSize=724m -XX:CompressedClassSpaceSize=296m

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.

-XX:+UseG1GC

Another idea for GC is to change to low pause. Ditto to remove -XX:+UseParallelGC.

-XX:+UseConcMarkSweepGC -XX:+UseParNewGC

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.

EG workers.properties

worker.cfusion.connection_pool_size = 400

worker.cfusion.connection_pool_minsize=100

worker.cfusion.connection_pool_timeout = 60

EG server.xml AJP section

maxThreads="400" minSpareThreads="100" connectionTimeout="60000"

HTH, Carl.

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guide ,
Jul 13, 2016 Jul 13, 2016

Copy link to clipboard

Copied

LATEST

Hi Mike,

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.

-XX:PermSize=312m -XX:MaxPermSize=512m

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.

Regards, Carl.

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines