0

Can anyone tell by the images below if this machine is unnaturally throttling memory usage. The memory was upgraded from 32GB-64GB for SSRS report rendering, which is the only sizable process to run.

SSRS went into panic mode.

  1. There was a log entry here

processing!ReportServer_0-1!a5c!09/19/2019-18:54:28:: w WARN: Processing Scalability -- Memory Shrink Request Received

  1. After the log entry above SSRS started paging to RSTempFile files as if they were virtual memory. There is no docs on this and as far as I can tell it is all internal and should be cleaned up, however, the files are growing to 40+GB.

According to the documents here, SSRS Memory Configuration, the absence of a WorkingSetMaximum in the configuration file means SSRS will claim as much memory as needed, however, it doesn't seem to claim it all up front like sql server.

By default, the report server sets WorkingSetMaximum to the amount of available memory on the computer. This value is detected when the service starts.

This setting does not appear in the RSReportServer.config file unless you add it manually. If you want the report server to use less memory, you can modify the RSReportServer.config file and add the element and value. Valid values range from 0 to maximum integer. This value is expressed in kilobytes.

I captured the box in this panic state and cant quite figure it out. SSRS is configured top use all available memory and started getting high pressure memory shrink requests and started paging to the disk cache files, however, the memory used on that box has never surpassed 32% since it was upgraded (see images below). Could there be something else that is artificially throttling the memory? It is a virtualized box, however, I can only look at it from an OS view as I am trouble shooting the disk space buildup issue.

The images below were taken when an ssrs excel renderer was going all out. Shouldn't the memory in use be much higher?

(when ssrs enters this stage, a two hour render is stretched out to 20 hours, the difference being using disk for VM, I guess. * When the render request ends (normally) ssrs cleans up * Once a render session transitions into this paging strategy, the session never transitions back, even when memory settles down. * Other "smaller" requests are processed quite fast and do not contribute to the paging. )

Image 1:

No points to post 1

Image 2:

No points to post 2

Image 3:

No points to post 3

Image 4:

No points to post 4

Ross Bush
  • 121
  • 1
  • 6
  • hi you did not told whcih server, with ehat kind of os, from the style i assume a w2012/r2 server as it does not tell a possiblity to compress ram – djdomi Sep 21 '19 at 12:41
  • SQL server won't claim all of the memory that it is going to use up front. It takes a while for it running to really eat up the RAM available to it. What are your settings at for both SQL maximum memory and SSRS memory? What version of SQL server and SSRS? Config files 80 90 4000000 2400000 – Rob Pearson Sep 21 '19 at 14:16
  • @RobPearson - 8000 For dbo.ReportingService and, I guess, unlimited for SSRS since I did not set a ceiling in the rsconfig file. There is no entry for . The rendering is all this box is for so we want it to take as much RAM as it can. – Ross Bush Sep 21 '19 at 20:25
  • @djdomi - Windows Server 2012 R2 – Ross Bush Sep 21 '19 at 20:26
  • How big is your database that SQL is managing? I'd like to provide you with some settings values to see how your system behaves, but I need this to come up with some starting recommendations. – Rob Pearson Sep 22 '19 at 22:10
  • @RobPearson The data base so super small on this instance, it just maintains the ssrs reports requested by forward facing api. – Ross Bush Sep 23 '19 at 01:30
  • Ok. I'm going to assume that the database in question is smaller than 100GB then. You noted your machine has 64GB of RAM. I'll base the SQL recommendation on a 20% of database size for RAM standard. Per this article ( https://www.sqlskills.com/blogs/jonathan/how-much-memory-does-my-sql-server-actually-need/ ) we're going to leave 12GB open for Windows. Set SQL server to max out at 16GB ( 16,384 MB ). This leaves 36 GB for SSRS, which I'd recommend setting explicitly in the config file I left above. Please make these adjustments and test, then post the results. – Rob Pearson Sep 23 '19 at 18:17
  • @RossBush - just to be clear, the only part of this that I'm expecting might help with your problem is explicitly defining the max RAM that SSRS can have. The rest of it is making your system's behavior more predictable. There's also some SQL tuning to this effect that I would recommend, but I can't see how any of it could be related to your SSRS memory behavior. – Rob Pearson Sep 23 '19 at 18:23
  • @RobPearson Just added the high memory threshold and restarted the service. Will test with that tomorrow. – Ross Bush Sep 24 '19 at 02:33
  • @RobPearson - Reeboot and setting a value for WorkingSetMaximum worked. I watched the working memory steadily grow to ~82Gb a few large render sessions and then back down to <1Gb when complete. – Ross Bush Sep 28 '19 at 20:01

1 Answers1

1

After the machine was rebooted we added 128GB of RAM and set a value for WorkingSetMaximum. SSRS was given 100GB of memory to consume and it never surpassed 84GB. I really cant say if the MS docs are wrong and setting WorkingSetMaximum will allow more memory to be consumed before a render thread starts mapping to files. It also could have been the reboot. I really don't have time to confirm but it is rendering out large reports now without creating to very large "page" files.

Ross Bush
  • 121
  • 1
  • 6