Concurrent user Access causes CPU max out on SSAS Tabular

Birkenheuer, Stefan 5 Reputation points
2025-08-22T06:26:32.5366667+00:00

Hi all,

we've build a medium sized tabular modell with ~10 GB of data. This runs on SSAS 2022 Enterprise Edition, the VM running the Instance has 16 vCores and 512 GB of memory (the host has got 64 pCores and 2048 GB of memory). We see great performance as long only a few users are accessing the machine with instant response <1s, but a massive performance drop on a realistic group of users accessing the model (up to several minutes response time) and the CPU is going up to 100% for several minutes. The memory consumption is stable and is not anywhere near the available memory.

Any idea where to start looking for the bottleneck?

Many thanks!

Stefan

SQL Server Analysis Services
SQL Server Analysis Services
A Microsoft online analytical data engine used in decision support and business analytics, providing the analytical data for business reports and client applications such as Power BI, Excel, Reporting Services reports, and other data visualization tools.
0 comments No comments
{count} vote

2 answers

Sort by: Most helpful
  1. Thumu Sai Pranay 0 Reputation points Microsoft External Staff Moderator
    2025-11-06T13:03:00.8166667+00:00

    Hi @Birkenheuer, Stefan,

    Thank you for the information and based on information you provided, it appears to be a typical case of CPU saturation due to concurrency in SSAS Tabular, even when memory usage is not an issue. In Tabular, performance can be strong for a single user, but multiple users often cause the VertiPaq engine to experience SE callbacks and threadpool contention.

    To address this, it’s best to capture a workload trace (using Flight Recorder or Query Log) to identify which DAX queries have the highest storage engine CPU usage. Then, review those queries for iterative expressions like SUMX, FILTER, or ADDCOLUMNS, and try to use aggregated patterns instead where possible.

    Additionally, check the engine configuration adjusting MaxParallelism and ThreadPool settings can help with throughput when many users are active, and make sure AutoDetectRelationshipsDuringQuery is turned off. These steps are key to improving concurrency scaling.

    Hope this helps. Please reach out for further assistance.

     

    Thank you.


  2. Birkenheuer, Stefan 5 Reputation points
    2025-11-21T12:23:26.0966667+00:00
    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.