1

We have a production server with two SSAS instances, 1 for user querying and 1 with empty templates where we do new releases and (full) processing of the cubes (and then backup and restore processed cubes to main instance, and delete the processed cubes from the 'processing' instance). This is to prevent any downtime on our instance used by clients. These processed cubes seem to be kept in memory, even though they are deleted after processing and backup.

This processing instance holds no data as seen in ssms, but it keeps growing in memory (up to 40-50GB) untill it starts failing to process due to memory issues after a few days.

About 95% of this memory is outside of the shrinkable/non-shrinkable data cleaner memory, so the memory limits are not doing anything to release this memory. After processing all cleaner memory drops to several 100 mb, while total memory usage for this instance stays high, and will keep growing untill we have failures. I don't believe the solution lies in any memory limits, since the used memory is not detected by the SSAS data cleaner. I have tested adjusting these memory limits, no effect.

Doing a process clear before deleting the cubes also has no effect.

The only thing that works is a manual restart of this instance every 2-3 days, but this is obviously not a proper/maintainable solution (automating this in a job step would require a proxy account with full admin rights on our production server, something we would like to avoid).

All software is up-to-date (microsoft analysis server version 15.0.35.33), VertiPaqPagingPolicy = 1, server mode is Tabular and all cubes are in Import mode.

I've been researching for a while now, but can't find the same issue anywhere, let alone a solution.

Any help would be greatly appreciated!

7
  • What is the engine version? Have you tried to change the memory limits to see if the tabular engine shrinks its own memory usage? What is your vertipaqpaginpolicy?
    – MBuschi
    May 26, 2023 at 9:34
  • thanks for the reply. Version 15.0.35.33. I have tried adjusting the memory limits, but the data cleaner can't reach this data. shrinkable/non-shrinkable memory is just a fraction of the total memory usage. VertiPaqPagingPolicy = 1
    – DBHeyer
    May 26, 2023 at 11:06
  • first of all, consider to update to the last CU: support.microsoft.com/en-us/topic/…
    – MBuschi
    May 26, 2023 at 11:49
  • and try to set VertiPaqMemoryLimit lower than LowMemoryLimit.
    – MBuschi
    May 26, 2023 at 11:55
  • We have a maintenance window scheduled in a few days where we will update to the latest version. I can try to set the VertipaqMemoryLimit lower than LowMemoryLimit, but please help me with the reasoning behind this. As far as I understand the mechanics, this would result in the additional data being paged to the system pagefile, while the datacleaner would still be doing nothing to evict unused data. So will we not simply end up with a full memory and full pagefile?
    – DBHeyer
    May 26, 2023 at 12:18

1 Answer 1

0

There's usually no point in having a processing instance if it's on the same server and you have only one query replica.

Processing the model while users are querying, whether you use a separate processing instance or not, requires lots of additional memory: enough to process the new objects while the existing objects are still being queried. So what use would it be to "release" that memory? You'll need it again the next time you process the model.

If memory grows to the point that it causes a failure, that is a problem. Are you using any 3rd party ODBC drivers or similar in processing? These can sometimes have memory leaks.

The only thing that works is a manual restart of this instance every 2-3 days but this is obviously not a proper/maintainable solution (automating this in a job step would require a proxy account with full admin rights on our production server, something we would like to avoid).

If you're not using this instance for anything but processing, what's the harm? You can simply use a local Windows Scheduled task running as System to restart the service.

1
  • Thanks for the reply! I agree that normally there would be no need to "release" this memory, but in this case there is a clear memory growth/leak that eventually causes problems. We don't make use of any 3rd party software during processing... A Windows Scheduled task is indeed an option, but this would be very difficult to schedule since some of our cubes are processed 24/7 at non-fixed time intervals.
    – DBHeyer
    May 30, 2023 at 8:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.