Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi experts:
I haved a question, i have a document (big document) that every week i have to restart the services, because the memory of the server, increase a lot and i have to restar the service to liberate the memory ram.
what change on the server could do?
i attached image of the server configuration, thank you a lot
Fernando
From a theoretical point of view this (RAM increasing over time although session and document timeouts are set) shouldn't happen because the server could manage the RAM and will clear the RAM automatically respectively tagged it as rewritable. But it don't work under all circumstances. So I think you will need to restart the services (more or less) regulary maybe automated per batch.
- Marcus
QlikView by design does massive in memory [RAM] caching which is good as it caches query results for re-use. RAM usage will therefore steadily increase until it reaches the Working Set High, which your screen shot shows at a sensible value of 90%. At that point it will start discarding cached queries with a last recently used algorithm. Restarting the QlikView Service will clear all these cached queries so that then QlikView will have to commence re-caching them which will reduce End User performance.
So my observation would be that your RAM usage behaviour is as per QlikView design and restarts would only have a negative affect.
Having said that QlikView is an In Memory Analysis Tool and needs a server with sufficient RAM.
When you say you wish to "liberate the memory ram", why do you wish to do this and what do you hope to achieve by doing it ?
If you have a machine with enough RAM only for the qlikview-server it may work. If not you will run more or less frequently into services- and/or server-crashes. In my case RAM is extremely scarce and crashes are often so I check each six hours per batch if users are online and if not I restart the services. And I assume that I'm not the only one with these circumstances.
- Marcus
Thank you Marcus, do you have any process to check user online, and then restart the service?
I use the following logic:
QVW:
let vPath = 'D:\QlikViewServer\ProgramData\QlikViewServer\Performance_OBKQLIKTECH_' &
year(Today()) & num(Week(today()), '00') & '.log';
PerformanceLogQV:
LOAD max(Timestamp) as Timestamp, ActiveDocSessions, Users
FROM $(vPath) (txt, utf8, embedded labels, delimiter is '\t')
Group By ActiveDocSessions, Users;
ActiveDocSessions:
Load *, rowno() as DS Resident PerformanceLogQV order by Timestamp desc;
drop table PerformanceLogQV;
let vActiveDocSessions = peek('Users', 0, 'ActiveDocSessions');
StoreVariable:
load $(vActiveDocSessions) /*as ActiveDocSessions*/ AutoGenerate 1;
store StoreVariable into D:\CheckActiveDocSessions.txt (txt);
drop table StoreVariable;
cmd-Batch:
set /p ActiveDocSession=<D:\CheckActiveDocSessions.txt
set ActiveDocSession=%ActiveDocSession:~3,3%
set /a checkvalue=0
if %ActiveDocSession%==%checkvalue% (
net stop qlikviewserver
timeout /T 5
net start qlikviewserver
net stop qlikviewwebserver
timeout /T 5
net start qlikviewwebserver
net stop QlikviewManagementService
timeout /T 5
net start QlikviewManagementService
net stop QlikViewDistributionService
timeout /T 5
net start QlikViewDistributionService
net stop QlikviewDirectoryServiceConnector
timeout /T 5
net start QlikviewDirectoryServiceConnector
) else (
REM echo "Aktive User ..."
)
This is triggered per windows-task which runs a batch which executed these qvw and cmd. I think there are more elegant ways possible as to query the log-file, maybe per Management-API but for me it worked.
- Marcus
HI,
To really give you an answer you are not giving us much information. I see the server is a low end box, being it has only one processor. I am assuming that it doesn't have a lot of memory in it either. Can you give more information on the setup of your system?
Bill
Hi
Add more cores and RAM.
Ronny