We have a document that is about 200megs in memory (size of qvs.exe) when accessed by one person through thin client;. When the document is closed (close the browswer) the memory is not released. We are testing this in our lab. I tried waitng a day to see if the memory would be released but it was not. In our lab document are "never" preloaded nor do we allow more than one document at a time to be loaded into memory.
Is this a known bug with SR3? I just finished reading a post ( http://community.qlik.com/forums/t/24193.aspx ) that mentioned a memory issue with reloading documents in SR3 (which we have also experienced with SR2 but have not tested with SR3).
We are noticing a similar issue with SR4 (9.00.7469.8). It seems like it is occurring more now that we upgraded the server to Windows 2008 R2 Enterprise. What OS are you running on? It seems like the memory only releases if you reboot the server. At least that has been our experience so far. We are not sure if it is a OS issue with Windows Server 2008 or a QlikView issue.
We are on Windows 2003 Server R2. We do not need to reboot to release memeory. I have just been restarting the QV Server service and that does the trick. Have you tried that? Its not good because you have to boot the users but its not as slow and invasive as a server reboot.
Anyway, my worry is that the memory will continue to grow as more people logon. In fact early tests of Multiple logon so far are showing that as memory is used, its not released. If you watch the memory usage it will go up and down by a bit but the big upward spikes when someone else logs on or another application is accessed by the same account do not seem to get released. My concern is that eventually memory will grow by to the maximum it could be given the number of user-application combinations.
I'm not a windows memory expert in any way and the more I learn the more complex it gets. However, here's a bit of how I understand the memory usage of QVS in Windows.
QVS is designed to use as much available RAM as possible. Ideally, it will be installed on a dedicated server so that it can reserve and eventually allocate the whole lot of RAM available to applications by the OS. QVS uses this RAM for loading documents and cacheing user selections and this is controlled by the "Working set limits" (see ref manual for more info.) that are set in the QEMC. When cacheing documents / states and selections, the next time someone accesses the same information, it will load much faster as the results of the calculations are done and stored in RAM already for easy access by QVS. Since the RAM is not being used for anything else it makes sense to hold the cache as long as possible. If the memory usage of QVS starts going up to the Working Set Limits it will start evaluating what it's holding in memory and begin to release data from the cache to make room for new selection states. So in theory, high memory usage should not be anything to worry about but it should come down a bit after a document is unloaded from memory, after the default 1440 minute unloading timeout, as far as I know.
Johannes are correct in this sense. I just want to make a couple of additions;
1. When terminating a (stateful) client session like a IE Plugin or Developer (Open in Server), only the session data for that client will unload directly. That is a relatively small amount of data.
2. When the document timeout hits (and is not superseeded by a Preload setting), only the raw, unaggregated data "tables" of the document will be unloaded. All cache that has been generated, that is all data needed to render the activated chart objects on sheets, will stay in memory.
3. Cache will never be cleared until the QVS decides to use the memory for newer/more expensive (sort of) cache objects - and that will most probably only occur if there is a physical memory shortage - that is, when the doc data+cache+state will get close to the configured QVS Working set limit ( the "Low" value, mainly). If a document gets "re-loaded" into memory, and has not changed significantly, the cache will re-attach to that document.
This behavior is all by design in v9.
That all sounds good. What i am seeing is that a document that is about 200meg when loaded into memory and subsequently closed and left to timeout, it does not unload any memory. All that was loaded appear to remain loaded. I dont have a good feel for the size of the cache relative to the raw unaggregated data tables but I would think that I would see a reasonable reduction in size after the timeout. We dont preload this document.
Tim, please try and add a new blank sheet to the document, make it the first one (Save the document with that sheet active), load the document in the QVS, note the memory commit used for that document (QVS idle - QVS with loaded doc), and wait for the timeout. When it hits, the same amount should flush, since a blank sheet does not generate any (sizeable) cache.
If nothing gets unloaded at timeout (and make sure nothing else gets loaded during), you might want to raise a support ticket, I would say.
QVS.exe starts with about 17meg. My document loaded with a blank sheet is about 219meg (qvs.exe0. I set unload to be 2 minutes. it actually took about 5 minutes but qvs.exe shrank to 45meg. That seems reasonable.
My issue was likely the amount of time for unload. It was set at 600 MINUTES rather than seconds -> my mistake. Thankyou.