Monday, July 25, 2016

Application Server Performance Issue / Proper sizing

Hello Friends,

We have many time face the issue of application server performance.
Mostly time it is related to hardware issue. Firewall Issue or May be disk utilization issue.

Performance/Sizing of the host NAV Server Tier machine depends on a number of factors.

I have also seen reports of the 'CacheSynchronizationPeriod' error reported when multiple NSTs are setup going to the same database. If one of the NST is caching a lot of data or locking tables this is where the sync can have issues. Below are some suggestions on how you can resolve this but the first one I would recommend is testing on the last build of NAV 2015 as some of these fixes are dependent on higher builds:


1) Adding the following key in the setting file, and changing the designed value. This is not visible by default. But you can try this.

  <add key="CacheSynchronizationPeriod" value="30" />

Product team has not make this key public due to potential performance drop problems, so they have mad this default value of 30 seconds.

2) The Disable Data cache key is newly introduced in NAN 2013 R2 (Build 39003) and in NAV 2015 build (39027).

<add key="DisableDataCache" value="false" />

With this key you can completely disable the Caching on the NAV Server. But you need to test and check the server performance if you get acceptable performance you can use this.

The existing parameter “Data Cache Size” you cannot set to zero. You need to use this new key .

3) Another option will be to user the SELECTLATESTVERSION C/Side function in the pages where you need to see the latest Data which by pass the NAV Server caching.


4)  Last option will be to use the LOCKTABLE function.

Number series use CU 396 in which there are LOCKTABLE calls to ensure consistency across NSTs. See e.g. https://msdn.microsoft.com/en-us/dynamics/nav/dn833429.aspx

Using LOCKTABLE is one way of ensuring Serialized writes. Many books describe best practices when using optimistic concurrency – including

Minimize code that needs to run ‘serialized’ (i.e. under a LockTable)
Consider creating a ‘reservation mechanism’
Check return values and build retry mechanisms

Hope this helps,

Keep Sharing....Keep Growing !!!

No comments:

Post a Comment