Lets start with the second part.
In the latest post I´ve talked about the memory for the middle tier but we need to check some things about the service.
Each NAV server needs 500 MB of memory to run plus 5 MB per user (active session) even if the sessions are idle and for every page the user opens, you need to allocate more memory.
The server instance has some special parameters to run and give service to the clients.
Data Cache Size – This parameter determines how much memory is used caching data. For a single tenant deployment 9 could be ok.
In NAV 2016 and higher the SQL – NAV interface use ADO.NET instead of ODBC so the resource consumption is lower than prior versions with ODBC.
The cache is a “store in memory” function so when a user read a record, if a second user wants to read the same record, gets it from cache because the cache is shared between the users of the same instance.
NAV use the cache when the system use the following functions
And there are two types of cache
Global Cache – for all users connected to a Microsoft Dynamics NAV instance.
Private cache – per user, per company, in a transactional scope. Data in a private cache for a given table and company are flushed when a transaction ends.
The cache that is used is determined by the lock state of a table. If a table is not locked than the global cache is queried for data; otherwise, the private cache is queried.
For a call to any of the FIND functions, 1024 rows are cached. You can set the size of the cache by using the Data Cache Size setting in the Microsoft Dynamics NAV Server configuration file. The default size is 9, which approximates a cache size of 500 MB. If you increase this number by one, then the cache size doubles. So, you need to consider how many records can bring back a simple SETRANGE function.
So, from here you can do the math and check how much memory do your Dynamics NAV server needs for one instance and add more memory for development and test instances (if they run in the same server).