Performance Problem in VM Environment for NAV 2016 and Beyond

Overview

This is a story of upgrading one of our clients from Microsoft Dynamics NAV 2013 to Microsoft Dynamics NAV 2016 (we recommended going to NAV 2017, but they didn’t want to be guinea pigs).

The upgrade itself was done on the customer’s live server, which was a brand new powerful server on VM (virtual) environment. During the upgrade, our developers complained that the performance on the live server was extremely slow. Initially, we thought it may have been the large amount of data (100 GB) that are being upgrade so we brushed it off.

When we went live, that’s when the performance on NAV got worst.

The Problem

Researching on Google and the Dynamics NAV forums on performance issues with Dynamics NAV 2016 came up with nothing. Of all the researches, NAV 2016 should perform a lot faster, not slower.

We’ve tried reindexing, changing the settings on the Dynamics NAV service tier, changing the CPU cores, SQL tuning. Nothing worked.

The problem in the end was how the VM hosts were setup. It matters which host SQL Server and Dynamics NAV server were setup. The following VM configuration was how the server was setup:

virtualenvironmentdynamicsnav

The Solution

The internal IT director put the Dynamics NAV server and the SQL Server on the same host on the VM and *poof*… All the performance problems went away. NAV was back running in blazing speed.

What was strange was that for NAV 2013, the SQL Server and the Dynamics NAV Server was running on different host and there were no performance issues.

Conclusion

When you’re in an VM environment, put the SQL Server and the Dynamics NAV server on the same host machine.

Upgrading to Dynamics NAV 2016 is nothing new for us. We’ve done quite a bit of the upgrades for companies but this issue baffled me a bit. The same structure used on NAV2013 did not work well on NAV2016.

Hopefully, if you read this, it will save you from some headaches that I’ve gone through.

  1. It looks to me really a network issue instead of NAV 2016 one.
    Most likely the 2 new hosts are not connected properly, you will need to look at routing/switching level. use some bandwidth monitor tool you will be able to identify whether there is a problem easily

  2. Hi Alex,

    Thank you for sharing your experience.

    However, when you investigated the problem have you checked the following points:

    1-The network performance between your NAV Server and SQL Server?
    2-Are the two VMs on the same host or different hosts?
    3-The IO speed on disks used on the NAV Server? (disks on SQL Server seems to work perfectly as your workaround resolved the problem).

    For point 1, the network performance depends on the VM solution (Hyper-V, VM Ware…)

    I had read some comparisons for virtualization based on Hyper-V:

    https://hyper-v.nu/archives/hvredevoort/2009/11/improving-network-throughput-between-hyper-v-r2-virtual-machines/

    http://www.aidanfinn.com/?p=10044

    If you have a chance to go throw these areas please share your comments back.

    Best regards,
    Nabil

  3. We thought it was the network issue. But NAV 2013 was working under the same environment without performance issues. According to their IT administrator, they ran diagnostics on their network and everything checks out.

  4. Hi Alex,
    We have also had problems with virtual machines but not the problem you described but it could be the same anyway.

    Jörg has described it in a blog article. I hope this could give you some more insight:

    NAV/SQL is completely „stalled“ because of too many CPU Threads

  5. Hi again,
    Forgot to mention that we did a standard technical CU upgrade 2015, CU4 to CU23 and had to do a complete rollback after four hours.

  6. This bad performance on two separate virtual servers occurs primarily, if the VMs are overloaded, i. e., if for example the physical machine has 16 CPU cores and each virtual server has been allocated 10 cores. The reason behind the resulting wait times is, that a VM is only working in time intervals, where all allocated CPUs are available.

  7. Ludo Van den Ende

    CPU overcommitment is a real drama, like explained bij G. Hübner.
    Having both SQL Server & NAV Server on the same host is a hughe improvement because the physical network layer is never addressed. Network traffic in such case is performed in memory.

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>