Commit Cache

Regularly we receive a warning saying “The commit cache is temporary full”. Currently, the database is used for 60% of the total database size (65536000 KB), DBMS Cache (300000 KB) and Object Cache (8000 KB). Please help how to fix the problem. Thanks, ZEN [:)]

You need to change the commit cache on server. you can do it with new command paramaters or go to register and edit there.

NAVISION can use a DBMS cache of 1GB maximum. So if enough RAM is available on this machine (you should have at least 2GB), you should increase this cache to the max. To improve performance of course you should activate the COMMIT cache, but you have to assure that this server has an relyable independent power supply. If COMMIT cache is enabled, 30% of the DBMS cache are used for it. Means: Currently you have 300MB DBMS with 100 MB COMMIT cache; setting DBMS cache to 1000MB will give you 300MB COMMIT cache.

Hi Zen, to answer your question. The commit cache in Navision is an area where wrtie transactions are processed and COMMITTED, as thouigh they were happening on the disk it self. Although commit cache is very diffent to write cache, many of the principles apply equally, most importantly being that if the data in the commit cache is not written to the disk, then the database is corrupted. Which is why a UPS scenario is critical. This is also differnt to the Navision normal cache which is similar in some ways to a disks read cache. In an ideal world, you will have a disk array system that is fast enough to commit all transactions onto disk. In this case, the commit cache is used just for those times when there is extra load on the commit system. Such as if a number of people simulaneously post orders, or other such major transactions. Normally Navision is creating the database version objects (you need to understand Navision’s version principle to really understand this), directly in commit cache, and then writing the commited versions back to the disks coninuously. But if there is extensive activity, more than the disks can handle then the hard drives can not keep up. In this case, the system stops, and the server refuses futher transactions until it can clear out the cache. This is when that message comes up. Basically this is fine if it happens just a few times, but if it happens regularly, it needs to be fixed. First of all, changing the cache will not fix the problem, but may hide it if it is not too serious. In reality, all though there are a number of causes of the issue, (and badly written enhanceents can be a cause), the most likely is that your Hard disk system is too small for the amount of work you are doing, or the disks are configured incorrectly. One major cause of this would be using RAID5. Anyway, definitely you should have more cache, 300,000 is qutie low, and if the issue is not major, it may get you by, but you should also look at your disk array. What is your server confirguration?

This is a very good lecture. David, you can be an outstanding teacher. That’s exactly what we have; RAID5. H/W: X86 Family 6 Model 8 Stepping 6. 1 GB RAM. O/S : Windows 2000 sp4. Now, I know what is going on. Please tell me step by step how to change the commit cache. Thanks ZEN

Zen, your problem is your Hard drive array, you need to change the RAID 5 to a RAID 1. It sounds like your databse is 60% of 64Gig, so about 40 Gig. For this you really need to split the database over at least 5 database parts, and more would be better. At the minimum you really want 10 disks organized as 5 mirrored drives for the database, and another pair for the OS and server programs.

PS thanks for the comments [:D]

Hhm…how do you split the database into the smaller parts? I don’t know about that. What is the possibility or risks for adding the commit cache with current configuration (RAID5). Thanks, ZEN

You really should not be running Navsion on RAID 5. No matter what you do with cache, this problem will not go away. Yes increasing the Cache will decrease how often you see the warnign message, and may give you breathing space for a short time, but it is not a long term solution. You need to reconfigure your server into a RAID 1 system, that needs to be done by your Hardware supplier in close cooperation with your NSC. In fact your NSC should have advised you when you started that you should not use RAID5, especially with a 40Gig database. Here is a logical and physical map of how to configure a Navision server:

That’s a very clear explanation. Unfortunately, our NSC didn’t mention about RAID 5 when they installed Navision into the Server. Rather than doing nothing; could you tall me how to increase and calculate the commit cache? THX, ZEN

Sure, but keep in mind that its a short term solution… Also this is not really an end user question in the traditional sense, this needs to be done by your IT department, and obviously only after they have a full backup in case they do something wrong. Also your NSC should be really doing this. If you stop the service, and something goes wrong, it may then be impossible to restart the Navision server. And it will then need the NSC to analyse the situation to get it working. So be very very carefull. If all goes well, this will take 10 minutes, if something goes wrong, it could take the whole weekend. any way… Go to the server, run task manager, and check how much available PHYSICAL ram you have. Currently if Navision is using 300Meg, then you will probably have around 400-500meg free. You really want to have a buffer of at least 64Meg, so from this work out how much additional ram you can give to Navision, but keep the total cache below 750Meg no matter what. You will be doing this on the weekend, or some time when there are no users, but in any case check to make sure everyone is logged off. Now that you know how much Cache to allocate, go to services, Stop the Navision server service. The Navision server is now stopped, and no one can access Navision. Then in the paramaters field enter “cache=xxx” and hit start. (xxx= the new cache size you have calculated.). And thats it. But please only do this with your NSC there.

Thank you David. That’s an excellent info. ZEN