3 Replies Latest reply on Jul 13, 2016 6:07 PM by carl type3

    Coldfusion 11 Performance settings

    mdemahy22

      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

        • 1. Re: Coldfusion 11 Performance settings
          haxtbh Level 4

          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.

          • 2. Re: Coldfusion 11 Performance settings
            carl type3 Level 4

            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.

            • 3. Re: Coldfusion 11 Performance settings
              carl type3 Level 4

              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.