I have performance issues when CF 2016 is installed on a Windows Server 2012 virtual machine (Hyper-V).
The performance issue is that the page is loading very slow compared to an installation on a simple Windows 10 computer with i5 CPU.
Comparison (all done with initial CF2016 settings):
- Hyper-V Windows Server 2012 64bit, 16GB RAM, 8 virtual CPUs loading of a page approx. 5000ms
- Physical Windows Server 2016 64 bit, 128GB RAM, 24 CPUs (I know its not yet supported, but I made a test) same loading time, approx 5000ms
- Physical Windows 10 64 bit, 8GB RAM, i5 CPU loading of a page approx 2500ms
From my point of view it's seems there are kind of virtualization issues.
Does anyone know which settings I need to tune to get same/better performance on a virtual server machine as on a simple win10 machine?
Are there any recommendation how to setup the virtual environment?
Note: I always used the same database for the tests, so it is not related to the database / queries.
Many thanks for your support!
What the heck kind of app have you designed that the _fastest_ response is 2.5 seconds??? Are you crunching data for the human genome project on a legacy Oracle db???? (Okay.. that was a bit facetious..)
On a serious note, you indicated that the CF Server 2016 was using initial (ie default) CFAdmin settings. Perhaps you should have researched what settings need to be modified in order to get optimal performance from CF _before_ testing, so you would get more realistic results. Putting it on a system (physical or VM) with 128G of ram isn't enough; you probably need to adjust Java heap, and other memory / processing settings to match what you are doing with CF Server.
Have you performed any monitoring to determine what the bottleneck is? 2.5 - 5 seconds seems like a lot. I've used CF10 on Windows 2012 Hyper-V w/only 8GB allocated to the OS (w/3g heap) and most CF-related response time is under 300ms.
Have you considered used Fusion Reactor (or enabled internal debugging) to determine what may be slowing it down?
I know that the application is not perfect (I had to take it over from someone else), so second step for sure will be to optimize.
Currently my problem is the transfer from the old to the new hardware platform, where I see a huge difference between a simple i5 PC which is much faster than the server machines.
I guess it has something to do with the hardware configuration and/or Hyper-V and not with CF settings itself.
I would appreciate if anyone has some hints on where to look at.
Does it run a database back end at all?
Moving a database can slow things down until index and statistics have been rebuilt.
You will need to give an idea of what is taking so long. Isolate a small bit of code and see if that takes just as long.
It could be anything in your code or the server, this issue is too broad to say where to look specifically.
Yes, I'm using a MySQL database which is located on a dedicated server. All of the mentioned setups above used the same database.
If I check the debug output, all database queries (response time) are OK.
The problem seems to be in the CFCs, they are take a very long time to complete. Also the CPU of the computer is going to 100%, but only on the server machines, on the i5 I don't see this behavior.
Without knowing what it is doing then its really hard to tell. There is obviously some code in there that is struggling but without know what it is or what its doing the answer could be anything.
You need to isolate sections of it and see if you can find the exact part. Using the CF server monitor or something like fusion reactor to see what part of the code the server is stuck on when it happens is the best place to start.