Posts mit dem Label Server werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Server werden angezeigt. Alle Posts anzeigen

Service Failure Alert Email in "QlikView April 2020"

Kein SCOM oder Nagios um den Status der QlikView Services zu überwachen? In QlikView 12.50 gibt es eine Alternative.

Bisher zeigte die QlikView Management Console den aktuellen Service-Status der anderen QlikView Services am Reiter "Service Status Overview" an. Mit QlikView 12.50 kann man sich diese Information aktiv als Email schicken lassen. 

ServiceFailureAlert Email QlikView April 2020
Erkennt das Management Service ein "disconnected" Qlik Service, schickt es ein Email.


Die Doku dazu ist noch ausständig, aber folgende Informationen haben wir vom Qlik Support erhalten und lokal bei uns getestet:


Um diese Einstellung zu aktivieren, müssen Sie das QlikView Management Service stoppen. Unter C:\Program Files\QlikView\Management Service die QVManagementService.exe.config die folgenden XML-Tags ergänzen:

<add key="ServiceFailureAlertEmailAddresses" value="qlikviewadmins@heldendaten.net"/>
<add key="ServiceFailureAlertEmailSubject" value="PROD QlikView Server: [SERVICE-NAME] on URL [SERVICE-URL] is down."/>
<add key="ServiceFailureAlertEmailBody" value="PROD QlikView Server: [SERVICE-NAME] on [SERVICE-URL] is down. Go to http://yourserver:4780/QMC/ServiceStatusOverview.htm for details!"/>

Die Tags [SERVICE-NAME] und [SERVICE-URL] sind Platzhalter, und werden dynamisch für das betroffene QlikView Service in das Email eingesetzt.

Das QlikView Management Service nutzt den Mailserver, den Sie in der QMC unter "System/Mail Server" konfiguriert haben. Unter Umständen müssen Sie in der QVManagementService.exe.config auch noch das bestehende Setting von false auf true umstellen:
<add key="UseSSLForSMTP" value="true"/>
QlikView 12.50 Service Failure Alert Config
Zeile 5-7 ergänzen. UseSSLForSMTP müsste schon in der .config zu finden sein.

Wenn Sie nun das QlikView Management Service starten, ist die Überwachung aktiv. Wenn man zum Test den QVS, QVWS, DSC, QDS oder Service Dispatcher Service über services.msc stoppt, sollten Sie folgende Service Failure Email bekommen.


QlikView 12.50 Service Failure Alert
Service Failure Email: Der QlikView Webserver (QVWS) ist down

Leider bekommt man keine Email wenn das Service wieder "up" geht. Und natürlich bekommt man keine Fehlermeldung wenn das QlikView Management Service selbst betroffen ist.  Deswegen ist eine Überwachung via SCOM, Nagios, SNMP, etc. noch immer zu bevorzugen bzw. zusätzlich zu aktivieren.

Den QlikView Server  (und indirekt den QVWS) kann man auch weiterhin regelmäßig über einen http-Request auf  diese URL prüfen: http://yourserver/Qvajaxzfc/QvsStatus.aspx. Der Status Up ist gut. Alles andere deutet darauf hin, dass der Server für die Endanwender nicht erreichbar ist (keine Lizenz, Service Down).

QvsStatus.aspx QlikView
QvsStatus.aspx vom QVWS sagt "Up" wenn QVS gut läuft

Häufigster Problem mit inresponsive Qlik-Services - gerade bei Single Machine Installationen - ist meist, dass die Datenmenge von QlikView Server (QVS) und Publisher (QDS) gemeinsam den Server ins "Paging" bringen. Es wird mehr Arbeitsspeicher allokiert als auf der Maschine verfügbar.

Der QlikView Server meldet RAM-Ressourcenknappheit für sich selbst (also nur die QVS.exe) in seinem Event-Log unter Severity "Warning" als "WorkingSet" Meldungen. QVS.exe versucht zwar den internen Result-Caches zu leeren, wenn aber weiter neue Applikationen von Endanwendern angefordert werden, geht der Memoryverbrauch sowohl über das definierte WorkingSet Limit Low (default 70) als auch WorkingSet Limit High (default 90).

QlikView Working Set Warnings
QVS hat zuerst nur 1.8 GB WorkingSet Low. Aber auch 24 GB sind zu wenig RAM für seine .qvws.

Eine Aussage wieviel Arbeitsspeicher der Publisher mit seinen Task-Executions (qvb.exe) gerne hätte, kann man mit dem QVS Log nicht treffen. Wenn Sie Ressourcen-Knappheit im Nachgang analysieren, und den Memory-Verbrauch des Publisher mit einbezieht möchten, dann ist es besser auf das Event 2004 im Windows System Event Log zu sehen.

Hier listet Microsoft bei "Resource-Exhaustion" die Prozesse mit dem höchsten Memory-Consumption in Bytes. Das ist für gewöhnlich der QVS.exe, oder bei großen Reload-Tasks, die entsprechende qvb.exe des Publishers. 

Das Schöne ist, dass man die ProcessID des Events 2004 auch in den TaskLog.txt unter C:\ProgramData\QlikTech\DistributionService\1\Log findet kann. Damit lässt sich das Problemskript des Publishers leicht identifizieren.

QlikView Event 2004 QVB.exe Finden
Die ProcessID 7332 ist der Task "RT_Wawi_DatenmodellVertrieb" und belegt knapp 60GB RAM


Unter Qlik Sense gibt es keine qvb.exe mehr, sondern die Engine.exe übernimmt Endanwender-Anfragen als auch die Reload-Tasks. Entsprechend ist dort die Unterscheidung woher der Ressourcenbedarf kommt schwieriger. Das spricht dafür, dass man auch in Qlik Sense einen eigenen "Scheduling" Server aufsetzt, der die Beladungen übernimmt.

Qlik Sense Event 2004
Engine.exe in Qlik Sense ist QVS.exe und QVB.exe in einem gemeinsamen Prozess. 



 


Qlik Server Eastereggs Sammlung

Die Qlik Knowledge Base zieht gerade um. Ich mochte die alte Qlik Knowledge Base eigentlich immer ganz gerne, wenn man eine konkrete Problemstellung/Logentry hatte. Die Suche hat stets sehr gut funktioniert. In der neuen Knowledge Base darf man zu den Artikeln Kommentare verfassen, um so direkt mit dem Qlik Support Mitarbeitern diskutieren und direktes Feedback geben zu können.


Die neue Qlik Support Section auf der Qlik Community
Die neue Qlik Support Section auf der Qlik Community


Wofür die Knowledge Base meiner Meinung nach nicht sehr gut funktioniert: sich einen Überblick über mögliche Einstellungen zu verschaffen. Man muss also zuerst auf ein Problem gestoßen sein, bevor man in der Knowledge Base etwas dazu finden kann. 

Sowohl in der alten als auch in der neuen Knowledge Base ist mir kein Eintrag bekannt, der alle Easter Egg Settings für den QlikView Server bzw. die Qlik Sense Engine auflistet. Über die letzten Jahre haben wir hier einige Einträge gesammelt und - wenn vorhanden - den jeweiligen Knowledge Base Artikel verlinkt. 

Die Liste ist ziemlich sicher nicht vollständig, aber über folgende Easteregg - die man in der Settings.ini manuell eintragen muss - sind wir bisher "gestolpert".


User Selektion im AJAX Client Excel Export

SelectionStampInBIFFExport=1

https://support.qlik.com/articles/000002517


QlikView 12.20 Fibre Loop Event Log entries

DisableCacheQueue=1

https://support.qlik.com/articles/000059269

 

AAALR Message in QlikView Server EventLog

DisableNewRowApplicator=0

https://support.qlik.com/articles/000019323

 

Lizenzinformationen von QVS auch als XML Datei

PgoAsXmlAlso=1

https://support.qlik.com/articles/000052992

 

Altes QlikView Set Analysis Verhalten (vor QlikView 12.20)

EnableSingleQuoteExactSearch=0

https://support.qlik.com/articles/000063567

 

QlikView Server Cache leeren

ClearCacheTimesPerDay=1
http://blog.heldendaten.net/2017/05/qlikview-server-das-gerucht-vom.html

 


QlikView 12.50 und Qlik Sense Sept 2019 Overload Protection

Dieses Setting ist so geheim, das hat nicht einmal einen Knowledge Base Artikel. Folgende Infos von R&D:

The new timeout setting is called OverloadExpireTimeSeconds.

 

It triggers before the working set parameter low (Min memory usage setting) is reached and it works "retroactively", so that a document that hasn't been used for that period of time is removed from memory the instant an overload situation is detected. The purpose is to preserve the QIX Engine's ability to cache results.

 

Please note: a worst-case scenario what happens with this setting on a server that is fundamentally overloaded, is that a document that is really needed could theoretically be unloaded over and over again, creating even greater load on the server.


In Qlik Sense we can't set the timeout per document. In Qlikview there is a document property that can specify the document's timout. By default this is not set, but it can be changed.

If this document timeout is set in the document, it still applies--overload or not. Which makes sense really, as it's an admin decision to set this timeout, with the purpose of controlling document life-time.

 

Bookmarks / Mail Bookmark as Link – wann verschwindet das Lesezeichen

ServerTempBookmarkDayTimeout=N

https://support.qlik.com/articles/000002746

 

Qlikview 12.30 SKIA Rendering back to GDI+

GraphicsBackEnd=0

https://support.qlik.com/articles/000063181

 

QlikView Server Debug Logging

Verbosity=900
SystemLogVerbosity=5

 https://support.qlik.com/articles/000003953

 

AJAX Container Box Darstellung – Labels abgeschnitten

NavigationAreaSizedOnlyByLabels=1
https://support.qlik.com/articles/000059276

 

Excel Export Settings

https://support.qlik.com/articles/000040322

 

Option Name

Meaning

Default Value

SELOG_Export

if print out log message related to Export function.

0: disable

1: enable

1

SendToExcelLegacyFormat

default "Send To Excel" behavior.

1: Legacy mode, export to xls

0: new mode, export to xlsx

0

QvExportTimeLimitSec

Time limit for exporting object to Xlsx. Integer number in seconds.

Use -1 if you don't want time limit;

Server: 180

Desktop: -1

QvExportMemoryLimitMB

Memory limit for exporting object to Xlsx. Integer number in MB.

Use if you don't want memory limit;

0

 

ExcelExportMixedAsText = 1
https://support.qlik.com/articles/000004098

 

Files/Pics aus dem Internet (zB Google Maps) werden nicht geladen

https://support.qlik.com/articles/000036107

 

WebFileUseWinAPI = 1 für Server und QVB.exe in Settings.ini ergänzen

AllowGeneralAccessToImagesThroughURL =1

https://support.qlik.com/articles/000023882

WebFileConnectorProxyServer=http://proxy server address
WebFileConnectorProxyPort=proxy server port

 

AJAX Hide Print und Export für neue Tables

PrintAndXLIconsForNewTables=0

https://support.qlik.com/articles/000003846

 

No/some mapping between account names and security IDs was done

 TranslateNameDisabled=1

https://support.qlik.com/articles/000002530

 

 

Session Recovery Bookmark ohne Layout

EnableApplyLayoutState=0

QlikView 11.20 SR13 introduces a server side setting that allows disabling layout state information from the session recovery bookmark. With the layout state disabled, only selections are saved in the session recovery bookmark. This means that a session will not recover to the sheet where the session was close, but instead to the application's default sheet. A bookmark without layout state information is smaller and will not require as much CPU time to be processed.

 

https://support.qlik.com/articles/000102075

https://support.qlik.com/articles/000036135

https://support.qlik.com/articles/000007868

 

Thumbnail am Accesspoint schneller aktualisieren

QvThumbnailCacheUpdateInterval=2

https://support.qlik.com/articles/000038326

ChartLegendCutoff=5000

QvMetaInterval=5

If QvMetaInterval is set to 0, preloads are performed every time the folders are scanned. QvMetaSecondsToWaitBetweenScans

Bevor in der Current Selection Box "9 von 123" Werten steht kann man hier den Wert erhöhen

MaxCurSelEntries=100

 

QixPerformanceLogVerbosity=3

 

Enter desired values for the four measurement levels

WarningProcessTimeMs=30000
ErrorProcessTimeMs=60000
WarningPeakMemory= 1073741824
ErrorPeakMemory= 2147483648

MaxRecurLevelForDefaultMissingAggr=nnn

ServerTempSecTimeout=15

RemoveExcelAfterDownload=1

MaxActionLevel=N

Aus den QlikView 12.20 SR1 Release Notes

For AJAX clients, it is now possible to change the default value for who is allowed to see a note connected to an object.

 

To change the sharing settings, you must modify the following entry in the settings.ini file:

NoteSharingDefaultAccess=0 Only the creator can see the note.

NoteSharingDefaultAccess=1 The note visibility is set to public and anyone can see the object (Default setting).

NoteSharingDefaultAccess=2 Visibility is restricted to specific user

SilentErrorInChart=1

 

 

PS: für den QlikView Publisher haben wir eine ähnliche Liste. Diese kann ich auch bei Gelegenheit gerne posten.

heldendaten CAL Manager for QlikView

Today I post an article about the heldendaten CAL Manager which was released on Qlik Market recently.

The QlikView Management Console allows to manage Document CALS. Unfortunately, it does not provide a good overview on how well CALs are utilized. The heldendaten CAL Manager provides a simple tool that helps you to optimize the CAL usage on your QlikView Server.


1    CAL Info

This tab gives you an overview on the overall CAL configuration of the QlikView Server.

Overview QlikView Server License & and which Documents have Document CALs assigned

 

1.1    Server Info

Shows how many Named CALs and Document CALs are „InLicense“ and how many of them are „Assigned“.

1.2    Documents with Doc CALs

This table shows which QlikView documents have Document CALs allocated (CALsAllocated) and how many of them are assigned to users (CALs Assigned).

1.3    Named CALs

Shows the assigned list of NAMED CALs with User, Last Used and QuarantinedUntil.




2    Assigned Document CALs

This table shows a list of all users and document names that have a Document CAL assigned.
Use the “Search for” input fields to filter for specific documents or usernames!

Filter for user "rva" to see which Documents have a license for this user(s)

 

 

3    Doc CAL Optimizer

This table shows the information how many Document & Named CAL assignments a single user has.
Depending on your license model, you can optimize the CAL usage:

  •  If the same user takes more than X Document CALs, a Named CAL would be better
  •  If a user has a Named CAL, no Document CAL is necessary at all!
USER A and USER B have a Named CAL and 4 Document CALs - this can be optimized


4    Get a Demo

Get a demo here. Install it on your QlikView Management Server machine, or modify the HD_CALManager.exe.config to point to the Management Service API.

Ensure that your user is member of the "QlikView Management API" group. If it does not exist, create the group on your server and add your user. Login and Logoff and then start the HD_CALManager.exe!

This group is necessary on the QlikView Server to access the Management API


5   Webservice to manage Document CALs

heldendaten CAL Manager uses the official Qlik Management APIs.  Sometimes it is necessary to integrate the QlikView CAL Management into your existing user management. To simplify the access to the Qlik Management APIs, we have extended our webservices with 3 new methods.


This allow you to manage QlikView Document CALs from your Java/Linux/Non-Windows platform with a simple HTTP GET/POST/SOAP call!

Get in touch with me if you are interested into the webservice!


QlikView Server - Das Gerücht vom Memoryleak und wie man den Cache zurücksetzt

Über das Memory & Cache-Verhalten des QlikView Servers wurde schon viel geschrieben. Trotzdem bleibt das Gerücht hartnäckig, dass der QlikView Server ein Memory Leak hat.



Wenn man sich jedoch einmal mit dem WorkingSetLimit-Setting in der QMC beschäftigt hat, wird einem  klar, dass der QlikView Server einfach gerne aggressiv cached. (Fast) jedes gerechnete "Chart", welches sich aus einer Userselektion ergibt, will der QlikView Server cachen, sofern er noch Memory (<= WorkingSetLimit Low) dafür zur Verfügung hat. Damit braucht ein QlikView Server immer weniger CPU-Zeit, "frisst" aber für gewöhnlich im Verlaufe eines Tages das Memory des Servers auf (und gibt es auch nicht mehr frei, sofern er das WorkingSetLimit Low getroffen hat).

Dieses Verhalt kann nerven - speziell wenn man am gleichen Server auch noch den Publisher/ServerReload laufen hat, und jemand zusätzlich mit dem QlikView Developer entwickelt. Dieses Deployment trifft auf  viele Testserver bei unseren Kunden zu!

Abhilfe kann ein Easteregg schaffen, das in der settings.ini des QlikView Servers gesetzt werden kann.

ClearCacheTimesPerDay=1

Das Setting löscht um Mitternacht den Cache des QlikView Server Services. Das bedeutet:
  •  Memory das von den Daten der .qvws belegt wird, bleibt belegt
  • Alle  gecachten Berechnungen werden gelöscht, und der QlikView Server gibt diesen Teil des Memorys wieder an das Betriebssystem frei.

Das Interessante an diesem Setting: man kann definieren wie oft der Cache geleert werden soll. Immer ausgehend von Mitternacht ergibt sich somit:

ClearCacheTimesPerDay=1Einmal am Tag um Mitternacht 00:00
ClearCacheTimesPerDay=200:00 und 12:00
ClearCacheTimesPerDay=300:00 08:00 16:00
...usw.
ClearCacheTimesPerDay=24jede Stunde 


Die Teststellung

Wir haben ClearCacheTimesPerDay=24 auf einer Teststellung bei uns überprüft.Und tatsächlich - zu jeder vollen Stunde wurde wieder das Memory des Caches freigegeben! Unterhalb unsere Vorgehensweise.

Server

Wir haben auf einem Win2016 Server mit 8GB RAM getestet. Das Workingset des Serves ist auf  50% beschränkt, damit sollte der QlikView Server Prozess bis maximal 4GB Daten cachen.

Workingset des QlikView Server Service auf 50% = 4GB

Das Testscript

Die .qvw für den Test ist recht simple. Das Script lautet:

load
  'A'&rowno() as row,
  rand() as value
autogenerate(1000000)

Im Layout gibt es eine einfache Tabelle. Wenn man einige Werte auswählt und dann Rechtsklick "Select excluded" wählt, füllt man mit jeder neuen Selektion den Server-Cache mit einigen Dutzend Megabytes.

Viele distinkte Daten füllen den Cache ganz gut!


Konfiguration & Test

  1. QlikView Server Service stoppen. Settings.ini ändern, Service starten
  2. Bis 09:43 haben wir den Cache des Servers durch "Klicken" in unserer Testapplikation  auf  2 Gigabyte hochgetrieben
  3. Um 10:00 sieht man im Performance Monitor eine steile Flanke nach oben. Memory wird also freigegeben!  Die Größe des QlikView Server Prozesses ist im Taskmanager auf 192 Megabyte gefallen! Das Setting hat also 1,98 GB Cache geleert! Die restlichen 192 MB sind die Daten in unserer Testapplikation plus ein wenig Overhead des QlikView Server Prozesses.
  4. Gleiches Spiel bis 10:40, nur dass wir mehr Zeilen im autogenerate()-Script der .qvw generiert haben  (ca 900 MB Daten im Memory). Damit füllt sich mehr Cache mit weniger Klick ;-)

    Diesmal haben wir den Cache bis an das Maximum von 4 Gigabytes hochgetrieben (wegen des definierten Workingset Low 50% von 8GB geht auch nicht mehr).

  5. Um 11:00 dann wieder der Drop auf 900 MB

Conclusio

Das Setting ClearCacheTimesPerDay funktioniert, und ist eleganter als ein net stop/start des QlikViewServer Services (bei dem alle Online-User aus ihrer QlikView Session fliegen). Für den Testserver kann es also sehr nützlich sein. Für den Produktiven Server ist es nicht zu empfehlen - da muss man schon ein sinnvolles HardwareSizing durchführen (gerne auch mit uns!).





QlikView und Windows 10

Mit dem heutigen Tag endet das Gratis-Update auf Windows 10. Auch in vielen Firmen sind zumindest neu angeschaffte Geräte bereits mit Windows 10 ausgestattet. Da viele Kunden noch auf QlikView 11.20 setzen, war in letzter Zeit folgende Fehlermeldung beim QlikView Developer/Plugin Setup die häufigste Anfrage, die wir über unseren Support-Kanal bekommen haben: "Das Betriebssystem ist zum Ausführen von QvPluginSetup nicht geeignet".

QlikView 11.20 SR15 Fehlermeldung bei der Installation unter Windows 10


QlikView 11.20 SR15 lässt sich also nicht unter Windows 10 installieren. Das ist korrekt, denn der offizielle Support für Windows 10 ist erst mit QlikView 12 hinzugekommen. Siehe System Requirements für QlikView 12.

In unseren Test hat sich gezeigt, dass es beim Zugriff mit QlikView 12 Client auf einen QlikView 11.20 Server zu Problemen kommen kann: wir hatten etwa den Fall wo sich Buttons im IEPlugin nicht mehr klicken ließen, wodurch das Ein/Ausblenden von Objekten nicht mehr funktioniert hat. Außerdem ist dieses Mixed-Deployment von Seiten Qlik eigentlich nicht supported, da unterschiedliche Programmversionen auf Client und auf Server installiert sind.

Ein überstürzter Upgrade auf QlikView Server 12 sollte jedoch nicht ganz auf die leichte Schulter genommen werden. Wie Rob Wunderlich in seinem Post "Preparing your script for QV12" zusammengefasst hat, verhält sich die neue Qlik-Engine, welche in Qlik Sense und QlikView Version 12 zum Einsatz kommt, bei manchen Script-Befehlen unterschiedlich zu QlikView 11.20.  Mittelfristig müssen wir uns aber alle mit diesen Änderungen auseinandersetzen, da der End Of Life für QlikView 11.20 mit 8. Dezember 2017 definiert ist.

Aus den oben genannten Gründen, schlagen wir momentan folgende Vorgehensweise vor:

  • Stand heute sind die meisten unserer Kunden auf QlikView 11.20
  • Wenn Sie vorhaben in Ihrem Unternehmen Windows 10 großflächig auszurollen, bitte nehmen Sie mit uns Kontakt auf, damit wir ein Upgrade auf QlikView 12 planen können

  • Wenn Sie vereinzelte Windows 10 Rechner haben, dann gibt es die Option den QlikView Developer 11.20 bzw. das QlikView Plugin 11.20  im Kompatibiltätsmodus für Window 7 zu installieren.

    Soweit wir sehen, funktioniert sowohl der QlikView Developer als auch das QvPlugin für Internet Explorer (nicht für Edge!) mit diesem "Trick". Dieses Vorgehen ist wohl auch nicht supported, aber zumindest hat man QlikView in der gleichen Version wie am Server am Laufen!

Kompatibilitätsmodus für Win 7 aktivieren und dann Setup starten

Der Beweis: Windows 10 Pro mit einem 11.20 SR15 QlikView Internet Explorer Plugin


  • Mittelfristig planen Sie bitte den Upgrade auf QlikView 12 ein. Heldendaten steht Ihnen hierfür natürlich gerne zu Verfügung!

    Dafür werden wir zuersten den Testserver auf QlikView 12 aktualisieren, um zu Überprüfen, ob alle Skript wie gewünscht durchlaufen. Wenn diese Tests erfolgreich abgeschlossen sind,  sollten wir den Upgrade der Produktivumgebung einplanen. Bitte kommen Sie dafür vor Herbst/Winter 2017 auf uns zu, da Sie sonst erst wieder mit einer nicht mehr supporteten Verison QlikView 11.20 da stehen!





QlikView Publisher in a nutshell

Oft werden wir gefragt, welche Funktionalität der QlikView Publisher umfasst. Leider kenne ich keine gutes Dokument, das alle Features übersichtlich listet. Unterhalb also mein Versuch die wichtigsten Punkte kurz zu beleuchten.


QlikView Server & Publisher auf zwei getrennte Maschinen

Kleine QlikView Installationen starten gerne mit einer Maschine die gleich zwei Aufgaben übernehmen muss: Das Beladen der QlikView Applikationen sowie die In Memory-Analyse über den QlikView Accesspoint.

Technisch übernehmen diese beide Aufgaben einerseits das QlikView Distribution Service (Beladung) und andererseits das QlikView Server Service (In Memory Analysen). Meist geht das eine Weile gut, doch eigentlich sind sich die beiden Services spinnefeind! Beide Services sind sehr Memory- und CPU-intensiv und wollen eigentlich alle Ressourcen für sich alleine!

Kastriert man den QlikView Server über seine WorkingSet-Limits, kann das Service weniger Cachen und die QlikView Anwendungen werden CPU-intensiver. Nutzt der QlikView Server alle Ressourcen um die Useranfragen schnellst möglich bereitzustellen, bleibt kein "Platz" mehr für die Beladung der Applikationen.

Wenn also über die Jahre die Datenmengen in den Applikationen wachsen, die Beladungen auch untertags stattfinden sollen oder immer mehr Kunden auf die Applikationen zugreifen - kurz gesagt wenn das Qlik Projekt ein Erfolg ist - dann streiten sich die beiden Services immer mehr um die beschränkten Rechner-Ressourcen, worunter die Gesamtperformance leidet. Am Sinnvollsten ist es dann,  die Services auf zwei getrennten Servern zu konfigurieren. Lizenztechnisch ist das aber nur mit einer Publisher Lizenz möglich.

Aus unserer Erfahrung schlagen wir immer folgendes Deployment vor, welches auf Dauer viel stabiler als eine "Single Server"-Lösung läuft, die Ressourcen besser nutzt und leichter zu Warten ist.

QlikView Deployment
Empfohlenes Deployment: Publisher und QlikView Server auf zwei Maschinen trennen


Cluster Publisher

Haben Sie eine Publisher-Lizenz, so dürfen Sie damit einen Server betreiben. Benötigen Sie eine Lastverteilung der Beladungen über mehrere Server, so können Sie das Distribution Service clustern. Die Taskdefinition in der QMC bleibt gleich, und Qlik entscheidet aufgrund eines Loadbalancing-Algorithmus auf welchem Reload-Server der Task dann tatsächlich ausgeführt wird.

QlikView Cluster Distribution Service
Mehrere Distribution Services sind sinnvoll, wenn sehr viele Beladetasks vorhanden sind

And Trigger - On Multiple Events completed

Sehr häufig sehen wir bei  Nicht-Publisher Kunden ewig lange Taskketten, da die QVD-Generatoren "seriell" nacheinander angestoßen werden. Das ist weder bezüglich Übersicht in der QMC, noch von der Laufzeit ideal.

Mit der Publisher-Lizenz wird ein weiterer Trigger-Typ freigeschalten: der "On Multiple Events Completed" oder auch "AND"-Trigger.

Typischerweise benötigt ein QlikView Datamart (Datenmodell) mehrere QVD-Generator als Vorgänger, da man oft pro Quellsystem einen eigenen QVDGenerator anlegt. Anstatt diese QVD-Generatoren seriell nacheinander laufen zu lassen, können Sie alle gleichzeitig wegstarten. Sobald der Langsamste fertig wird, startet der Datenmodell-Task. So lässt sich die Durchlaufzeit erheblich reduzieren.

QlikView AND Trigger on multiple events completed
Der Task startet, wenn der "langsamste" der drei  (parallel laufenden) Vorgängertasks fertig ist

Simple Reduce  und Loop&Reduce

Sie haben eine große Applikation, die Sie in mehrere kleine Tortenstücke "schneiden" möchten? Mit der Publisher-Lizenz erhalten Sie den Menüpunkt "Reduce".

Typisches Anwendungsgebiet ist, dass Sie für Ihre Niederlassungen (US, EU, Asia) getrennte Applikationen berechtigen möchten, während die User im Stammhaus weiterhin alle Daten in einer großen Applikation im Zugriff haben sollen. Aus der Gesamtapplikation lässt sich in der QMC manuell oder als "Seriendruck" mehrere kleinere .qvws schneiden und automatisch für die User berechtigen.

QlikView Publisher Simple Reduce
Simple Reduce über Land=Deutschland, Österreich und den Kategorienamen=Getränke


Qlikview Publisher Loop and Reduce
Loop&Reduce über das Feld "Land"  erzeugt und berechtigt pro Land eine Applikation


Distribute zu Email/Netzlaufwerk/Accesspoint

Ohne Publisher Lizenz muss die .qvw immer am Ort beladen werden, wo auch der User via Accesspoint darauf zugreift. Mit dem Publisher sind Sie hier flexibler: Sie können QlikView Auswertungen via Email verschicken, auf einem Netzlaufwerk bereitstellen, oder auf einen Ihrer Accesspoints verteilen. Der Menüpunkt "Distribute", über den Sie auch die Userberechtigungen steuern, wird mit der Publisherlizenz freigeschalten.

QlikView Publisher Distribute
Der Distribute Reiter verteilt und berechtigt die QlikView Applikation

Notify

Ein kleines Feature, aber nicht unwichtig: Sie wollen Ihre Mitarbeiter informieren, dass eine aktualisierte Version der Qlik Applikation am Accesspoint bereitsteht: setzen Sie den Haken "Notify" um alle Berichtsempfänger zu informieren. Unter "System" können Sie das Notify-Emailtemplate bearbeiten.

QlikView Publisher Notify
Allen Empfängern eine Email schicken wenn QlikView Applikation frisch beladen wurde

Mehr als ein Task pro .qvw möglich

Oft ärgerlich ohne Publisher-Lizenz: man kann pro .qvw nur einen Task anlegen. Manchmal möchte man aber den Task jeden Montag und am Monatsende laufen lassen. Oder man möchte neben einer zeitgesteuerten Ausführung den Task auch von einem externen System angestoßen lassen.

Mit der Publisher Lizenz können Sie pro .qvw beliebig viele Tasks anlegen.

QlikView Publisher Multiple Tasks
Mehrere Tasks auf einer .qvw


EDX (über schönen Tasknamen ansprechbar)

Hier geht es darum, die QlikView Tasks von extern anzustoßen. Ein Beispiel wäre, dass ein externer Scheduler den QlikView Task erst startet, nachdem das Data Warehouse fertig beladen wurde (da dies zu unterschiedlichen Uhrzeiten eintreten kann).

EDX oder "Event Driven Execution" geht genaugenommen auch ohne Publisher Lizenz. Aber man muss schon ziemlich gut im "Tasknamen Raten" sein, um den Task von einem Vorsystem anstoßen zu können. Mit der Publisher-Lizenz können Sie jedem Task einen Namen und eine Description geben, damit wird das Anstoßen der QlikView-Tasks durch das Vorsystem deutlich komfortabler.

QlikView Publisher EDX Trigger
Ein externer Scheduler kann den Publisher Task mit dem Namen anstarten


Supporting Tasks

Neben dem reinen Beladen von QlikView Applikationen, können Sie mit dem Publisher auch weitere Tasks durchführen. Dazu zählt:

  • Das Ausführen von External Programs (zB Powershell/Batch-File um Daten zu löschen/kopieren, CacheWarming, etc.)
  • Database Command Tasks (zB Inserts in Log-Datenbank wenn alle Tasks erfolgreich durchgelaufen sind)
  • QVD Creation Tasks: Erzeugen und Berechtigen von .QVD Datentöpfen auch ohne QlikView Applikation. Berechtigte Self Service BI-User können dann diese .qvds nutzen um Ihre eigenen Applikationen aufzubauen
  • Pause Task: Dieser Tasktyp macht einfach mal Pause :-)

QlikView Publisher Supporting Tasks
Supporting Tasks  unabhängig von .qvws

Document Administrator

Sie haben Fachabteilungen die sich Ihre Dashboards selbst beladen/schedulen und berechtigen können? Gleichzeitig wollen Sie aber vermeiden, dass diese User Systemeinstellungen Ihrer QlikView Umgebung ändern können!

Der Publisher erlaubt mit dem Document Administrator Feature, dass bestimmte User nur bestimmte Applikationen in der QMC verwalten dürfen. Typischerweise definiert man pro Fachabteilung einen Mount-Point in dem alle Applikationen sind, die die Document Adminstrators selbst verwalten sollen. Die anderen Abteilungs-Applikationen sowie der Reiter "System" bleiben für diese Document Administrator verborgen.

QlikView Publisher Document Administrator
Dieser Document Administrator sieht nur seine Tasks im Mountpoint Default und HR. Der Reiter "Users" und "System" ist ebenfalls ausgeblendet

User Suche und Section Access Management

Wenn  die Berechtigungen nicht aus dem Vorsystem übernommen werden können, dann können Sie diese mit der Publisher-Lizenz zentral in der QMC managen. Benötigen Sie applikationsspezifische Berechtigungen (User X darf nur Kostenstelle Y sehen) so steht Ihnen hierfür der Menüpunkt "Section Access Management" zur Verfügung.

QlikView Publisher Section Access Management
Zentrales Management von User Rollen für Section Access
  

Parameter

Ähnlich gelagert wie "Loop & Reduce" können sie mittels Scriptparameter eine Variable an das QlikView-Skript übergeben. Wenn Sie  im QlikView Script etwa eine Variable vMandant haben, die im Skript wiefolgt genutzt wird
 
Select

*

from Fakten where MANDANT = $(vMandant); 

so können Sie die Variable in der QMC als Script Parameter setzen. So können Sie eine .qvw als Vorlage benutzen, um mit dem Publisher mehrere Varianten der Applikation zu verteilen.

QlikView Publisher Script Paramenter
Das Script in der .qvw würde dreimal ausgeführt werden: für den Mandanten 200, 300 und 500.

Remote Management Service

Wenn Sie in Ihrem Test/Quality System ebenfalls eine Publisher Lizenz haben, so können Sie in der Produktivumgebung dieses System als "Remote Distribution Service" eintragen. Damit können Sie die Taskdefinitionen aus dem Test/Quality System in die Produktivumgebung übernehmen.

QlikView Publisher Remote Management Service
Remote Management Service am Server "testsystem"


Backup QVPR einstellbar

Die Taskdefinitionen der QMC werden defaultmäßig in einem XML-Repository abgelegt. Dieses liegt für gewöhnlich unter  C:\ProgramData\QlikTech\ManagementService\QVPR. Dort wird auch täglich ein Backup angelegt. Mit der Publisher-Lizenz können Sie diese Backups auch in einem Ordner ablegen, der sowieso schon in Ihrem Backup-Plan enthalten ist.

QlikView Publisher QVPR Backup
QVPR Einstellungen für Pfad + Backup

Supervisor User

Anstatt die Administratoren (zB die User der IT-Abteilung) in jeder einzelnen Applikation zu berechtigen, gibt es das Konzept der Supervisor User. Diese User werden automatisch in jedem Distribution Task angehängt und dürfen alle QlikView Applikationen sehen.

QlikView Publisher Supervisor
Supervisor User für "Whole Server" definiert


Number of Task Attempts  bei Taskdefinition einstellbar

Leider laufen Beladetasks manchmal auf einen Fehler. Weil das Quellsystem nicht da ist, weil die Netzwerkverbindung weg ist, oder weil am Server nicht genügend Ressourcen bereit stehen. Viele Administratoren starten dann den Task frühmorgens nochmal, und dann läuft er plötzlich durch. Mit der Publisher-Lizenz können Sie die Tasks so definieren, dass der Publisher nach einem "Fehlschlag" die Beladung nochmal versucht. Oft klappt es dann beim zweiten Mal!

QlikView Publisher Task Number of Tries
Number of tries bevor der Publisher den Task "aufgibt"


 Audit 

Vertrauen ist gut, Kontrolle ist besser. In manchen Anwendungsgebieten muss man einfach nachvollziehen können, welcher User wann welche Änderungen durchgeführt hat (Task Trigger geändert, User berechtigt). Mit der Publisher Lizenz haben Sie die Option einen Audit-Log für die QMC zu aktivieren. Das Logfile kann dann natürlich mit QlikView ausgewertet werden.

QlikView Publisher Audit Log QMC
Audit Log für Änderungen in QMC kann in Config File aktiviert werden

QlikView Publisher - Monitoring mit Perfmon

Häufig wird bei Hardware Sizing nur über das Qlik Server Service gesprochen. Die harte Arbeit der Datenaufbereitung übernimmt in der Nacht jedoch das Publisher Modul. Viele kleinere bis mittlere Qlik Installationen nutzen für diese (nächtliche) Beladung die gleiche Maschine. Das geht oft gut, doch kämpfen Server und Publisher dann häufig um die gleichen Memory- und CPU-Ressourcen, was über die Zeit bei wachsenden Datenmengen zu unerwünschten Verhalten führt. Um die notwendigen Ressourcen für den Publisher besser monitoren zu können, installiert Qlik - gut versteckt - einige Indikatoren in Microsoft Perfmon.

Das QlikView Server Service ist sehr aggressiv in seiner Memory-Consumption. Ähnlich eines Datenbankservers reserviert es Memory (WorkingSet) vor, da es annimmt, das wichtigste Service am ganzen System zu sein. Auch in der Nacht hält das  QlikView Server Service sein Memory (vor allem wenn es das untere Workingset schon einmal erreicht hat), was dazu führt, dass für die Reloads nur wenig freier Speicher zur Verfügung steht. Laufen dann noch mehrere Reloads gleichzeitig, kann es mit Memory auf einer einzelnen Maschine schnell knapp werden.

Für QMC-Administratoren ist es oft schwierig zu sagen, wann wieviel Tasks gleichzeit laufen und wieviel Last vom Publisher (bzw den qvb.exe des Distribution Services) dabei produziert wird. Seit QlikView 11.20 SR7 kann man sich zwar in jedem TaskLog eine Summary zeigen lassen, das gibt aber kein vollständiges Bild wie sich die Beladungen über einen vollen Nacht-Zyklus inklusive aller Abhängigkeiten verhält.

Um zu verstehen was nächtens bei den Reloads am Server so passiert, gibt es ein gut verstecktes Feature: Das QlikView Distribution Service registriert einige Performance Counter Indikatoren in Microsoft's PerfMon Tool das in jeder Windows Version zur Verfügung steht.

PerfMon - Performance Counter Indikatoren vom QlikView Distribution Service

Nicht alle Indikatoren sind ganz verständlich (und werden wohl nur vom Qlik Support genutzt), aber um sich einen Überblick zu verschaffen, benutze ich gerne

  • # of running tasks .. wieviele Tasks (qvb.exe) laufen gerade
  • Current QVB CPU Load .. CPU Zeit die von den Reload Tasks verbraucht wird.
  • Current QVB memory Usage .. den absoluten Wert kann ich nicht ganz nachvollziehen, aber er zeigt Arbeitsspeicher-Ausreißer bei großen JOINs usw.
Zusätzlich kann man einige Standard Windows-Indikatoren wie Arbeitsspeicher und Prozessorzeit (%) dazuhängen, um das Gesamtsystem zu überwachen.

Die nächsten Sceenhshots zeigen ein Beispiel wie Perfmon den Verlauf über die Zeit mitprotokolliert.



Die hellgrüne Linie zeigt die 4 gerade laufenden Tasks der QMC. Die Dunkelgrüne zeigt die Summe der verbrauchte CPU Zeit dieser Tasks (in Summe vier qvb.exe, in Screenshot sieht man nur eine qvb.exe im Taskmanager, da alle anderen gerade keine CPU verbrauchen). Rot+Blau gestrichelt zeigen den Zustand des gesamten Servers. Die gelbe Linie "Current QVB memory usage" kann ich in absoluten Zahlen nicht deuten, ist aber eine interessante Information um ressourcenfressende Skripte zu entdecken.

Werden die Reloads nach der Reihe fertig abgearbeitet, fallen auch die zwei grünen Linien entsprechend. Siehe unterhalb Screenshot mit nur noch einem laufenden Reloadtask.





Bei größeren Installationen - oder falls Sie viele untertägige Reloads fahren - empfehlen wir immer das Aufteilen der zwei Services "QlikView Server Service" und "QlikView Distribution Service (aka Publisher)".  Im Zeitalter der Virtualisierung und noch immer fallender Memory-Preise ist ein Deployment mit zwei Maschinen vorzuziehen. Beide Services können die vollen Ressourcen Ihrer Maschine nutzen, und kommen sich auch unter hoher Last nicht in die Quere.


Ein exemplarisches Deployment auf  zwei Maschinen für "PRODUKTIV"

 Wo das ManagementService und der Webserver läuft, ist zu vernachlässigen. Manchmal setzt man dafür auch eine dritte Maschine ein.
heldendaten GmbH,2020