Performance

Es gibt verschiedene Vorgänge, die Vertec verlangsamen können. Am Anfang ist es wichtig, zu eruieren, was genau langsam ist. Oft handelt es sich nur um eine Listen- oder eine Ordneranzeige, oder ein bestimmtes Verhalten ruft eine Performance-Verschlechterung hervor.

Zuerst muss herausgefunden werden, ob es sich wirklich um ein Problem mit Vertec handelt. Ursache könnte zum Beispiel auch ein Netzwerkproblem sein. Um das herauszufinden, beachten Sie einmal die CPU-Auslastung von Vertec.exe, während Sie auf dem Client mit Vertec arbeiten (im Task-Manager).

Einen weiteren Hinweis kann die Diagnosefunktion des Vertec DB-Tools liefern, welche verschiedene Test durchführt wie einen Verbindungsaufbau zur Datenbank, Erzeugen einer Tabelle und das Einfügen und Abfragen von Tabelleneinträgen und die genauen Verbindungszeiten auflistet.

CPU-Auslastung ist niedrig

Wenn mit Vertec.exe praktisch nichts läuft, während Sie im Vertec warten müssen, können Sie davon ausgehen, dass es sich um ein Netzwerk- oder Serverproblem handelt, und Vertec vom System her am warten ist. Bitte beachten Sie dazu den Artikel Performance im Netz.

CPU-Auslastung ist hoch

Ist die CPU-Auslastung von Vertec.exe hoch, während Sie im Vertec warten müssen, kann davon ausgegangen werden, dass es wirklich Vertec ist, das langsam ist (vorausgesetzt, Ihr System entspricht den Mindestanforderungen).

Versuchen Sie herauszufinden, wo in Vertec das Performance-Problem liegt. Nachfolgende Liste soll Ihnen helfen, dem Problem auf die Spur zu kommen.

Ist der Vertec Service gestartet? Läuft das Notif normal?

Falls Sie mit Vertec Service oder Notif arbeiten, kontrollieren Sie, dass der Vertec Server gestartet ist und Notif keine Fehler meldet.

Vertec startet langsam auf, ist aber nachher schnell

IX-Ordner auf oberster Ebene

Eine mögliche Ursache könnte ein IX-Ordner sein, der auf der obersten Ebene von Vertec eingerichtet ist. Die oberste Ebene, der sogenannte Root, ist die, die man als erstes sieht, wenn Vertec aufgestartet wird (z.B. Stammdaten, öffentliche Ordner).

Der IX-Ordner berechnet seinen Inhalt, sobald die Ebene, in der er sich befindet, angezeigt wird. Befindet sich der Ordner im Root, ist das beim Aufstarten der Fall.

Verschieben Sie den IX-Ordner auf eine tiefere Ebene, dann startet Vertec wieder mit normaler Geschwindigkeit. Einen Ordner verschieben können Sie mittels dem Script: Ordner verschieben.

Wrapper-Link-Typen

Beim Aufstarten wird auf oberster Ebene die Ordnerstruktur des eingeloggten Bearbeiters angezeigt. Falls Sie Wrapper-Link-Typen auf Projektbearbeiter verwenden, die die Option Container immer anzeigen deaktiviert haben, wird beim Aufbauen des Baums bei jedem von diesen Containern gecheckt, ob er angezeigt werden muss oder nicht. Aktivieren Sie bei diesen WrapperLinkTypen die Option Container immer anzeigen.  Somit wird der Ordner im Baum zwar angezeigt, die Objekte werden jedoch erst geladen, wenn Sie auf den entsprechenden Ordner klicken.

Aktive Projekte beim Programmstart einlesen

Bei Installationen mit sehr vielen Projekten (ab 2000-3000 aktive Projekte) ist es von Vorteil die Projekte nicht bei Programmstart einzulesen. Beachten Sie hierzu folgende Schritte:

  • Deaktivieren Sie in den Systemeinstellungen unter Projekt den Eintrag Aktive Projekte beim Programmstart einlesen.
  • Ändern Sie in allen Listen mit Projektspalten (Leistungen, Spesen, Auslagen und Aktivitäten) das Steuerelement des Projektspalte in edtProjekt. Dies führt dazu, dass statt einer Dropdown-Auswahl ein Suchdialog erscheint.

Version

Zwischen Version 5.1.0.31 und 5.1.0.41 wurden die Kundenadressen beim Startup reingeladen. Falls Sie eine dieser Versionen verwenden und der Startup langsam ist, sollten Sie eine neuere Version verwenden.

Loaded Objects kontrollieren

Im Vertec unter Optionen > System Info finden Sie unter [LoadedObjects] eine Liste aller Objekte, die geladen wurden. Kontrollieren Sie also nach dem Starten, was Vertec geladen hat. Das könnte einen Hinweis liefern, warum der Start langsam ist.

Langsamer Start wegen Filesharing Problemen

Wenn Vertec.exe auf dem Fileserver liegt und von dort gestartet wird, können sich Probleme mit dem Filesharing auf die Start-Performance auswirken.

Ein einfacher Test, Startprobleme im Zusammenhang mit Filesharing zu diagnostizieren ist, das Vertec.exe lokal zu kopieren und zu starten. Wenn es dann schneller ist, dass liegt das Problem beim Filesharing (SMB Protokoll).

In einem Fall mit einem Fileserver und XP als Clients traten Filesharing Probleme auf. Das Deaktivieren des SMB2 Protokolls auf dem Server hat dann eine Verbesserung gebracht. Das SMB2 Protokoll sollte jedoch nicht dauerhaft abgestellt werden (siehe http://support.microsoft.com/kb/2696547/de).

Langsamer Start wegen verschiedener IP Versionen

In einem Fall trat die Begebenheit auf, dass auf einigen Clients der Vertec-Start sehr langsam war. Nach dem die Verbindung stand, lief Vertec aber normal schnell.

Der Grund lag darin, dass der Server auf IPv6 eingestellt war und die Verbindungsversuche auch so erwartet hat. Alle problematischen Clients waren aber auf IPv4 eingestellt. Diese Konfiguration ist offenbar möglich, führt aber zu Verzögerungen beim Verbindungsaufbau. Nachdem der Server ganz auf IPv4 eingestellt wurde, traten die Verzögerungen nicht mehr auf.

Verzögerter Programmstart von Vertec 6.0 bei fehlender Internetverbindung

Der Start der Desktop App dauert 20 bis 30 Sekunden auf einem Rechner ohne Internetverbindung. Sobald eine Internetverbindung vorhanden ist, startet die Applikation in der gewohnten Geschwindigkeit. Bei der Classic App tritt die Verzögerung nicht auf.

Das hängt mit dem Certificate Revocation Check (CRL) von .NET zusammen. Wird Internetoptionen > Erweitert >Sicherheit > Auf gesperrte Zertifikate von Herausgebern prüfen (Check for publisher’s certificate revocation) deaktiviert, startet die Applikation normal.

Abhilfe: Internet-Verbindung bereitstellen oder Revocation-list checking deaktiveren (das es nicht braucht, wenn keine Internet-Verbindung besteht).

Ein bestimmter Ordner öffnet sich langsam

Ordnerstruktur

Der Ordner, den Sie anklicken, ist Teil einer Ordnerstruktur. Was angezeigt werden soll, sind die Unterordner.

Eine mögliche Ursache könnte ein IX-Ordner sein, der als einer der Unterordner eingerichtet ist. Der IX-Ordner berechnet seinen Inhalt, sobald die Ebene, in der er sich befindet, angezeigt wird. In dem Fall dauert die Anzeige des Überordners lange.

Verschieben Sie den IX-Ordner auf eine tiefere Ebene, zum Beispiel, in dem Sie einfach einen weiteren Ordner zwischenschalten. Der IX-Ordner berechnet sich dann nur, wenn Sie ihn wirklich einsehen wollen. Einen Ordner verschieben können Sie mittels dem Script: Ordner verschieben.

Einzelordner

Der Ordner ist ein Einzelordner. Es sollen die Einträge angezeigt werden. Es handelt sich um einen:

Normalen Ordner

Falls es sich um Tausende von Einträgen handelt, die geladen werden sollen, kann es etwas länger dauern. In dem Fall müssen Sie einfach warten. In jedem anderen Fall wird es eher ein Problem der angezeigten Liste sein. Siehe dazu weiter unten "Liste wird langsam angezeigt".

Expression-Ordner

  • Überprüfen Sie die Expression. Kann sie optimiert werden?
    Es gibt in Vertec Klassen, welche sehr viele Objekte umfassen können. Bei Angabe einer Klassenliste in OCL werden alle Objekte der betreffenden Klasse in den Arbeitsspeicher geladen. Insbesondere bei den Klassen OffeneLeistung oder VerrechneteLeistung kann dies zu hohem Speicherbedarf und schlechter Performance führen.
    Können Sie den Ausgangspunkt umstellen? Können Sie zum Beispiel statt von verrechneten Leistungen von Rechnungen ausgehen, die verrechnet sind? Oder können Sie statt der offenen Leistungen zuerst nur die Bearbeiter eines bestimmten Teams aufrufen, und nur diese Leistungen nehmen? Können Sie statt der Leistungen Leistungssummen verwenden?
  • Kann statt einem Expression- auch ein SQL-Ordner verwendet werden? SQL-Ordner sind empfehlenswert, wenn aus einer grossen Datenmenge bestimmte Objekte aufgrund einer einfachen Bedingung selektiert werden sollen. Im Gegensatz zur OCL-Expression werden nur die der SQL-Bedingung entsprechenden Objekte aus der Datenbank geladen.
    Anmerkung: Falls der Ordner einem Abfrage-Ordner zugrunde liegt, sollten Sie ihn nicht umstellen. SQL-Ordner sollten nicht als Basis für Abfrage-Ordner verwendet werden.
  • Scheint Ihnen die Expression in Ordnung? Dann könnte es an den angezeigten Listeneinstellungen liegen. Um das zu überprüfen, erstellen Sie einen temporären Expression-Ordner mit der gleichen Expression. Geht das schneller, ist das Problem in der Liste zu suchen. Siehe dazu weiter unten Liste wird langsam angezeigt.

SQL-Ordner

Falls es sich um Tausende von Einträgen handelt, die geladen werden sollen, kann es etwas länger dauern. In dem Fall müssen Sie einfach warten. In jedem anderen Fall wird es eher ein Problem der angezeigten Liste sein. Siehe dazu weiter unten Liste wird langsam angezeigt.

Abfrage-Ordner

Ein Abfrage-Order basiert auf verschiedenen anderen Ordnern. Überprüfen Sie die zugrunde liegenden Ordner. Hat es einen "Langläufer" darunter, den Sie optimieren können? Ansonsten könnte es auch an den Listeneinstellungen liegen. Siehe dazu weiter unten Liste wird langsam angezeigt.

Liste wird langsam angezeigt

Überprüfen der Spalten

Wichtig ist, dass Spalten, die nicht mehr benötigt werden, nicht einfach auf 0 Breite gesetzt, sondern glöscht werden. Sonst werden sie nach wie vor berechnet und kosten Zeit. Kontrollieren Sie, ob in der Liste solche Spalten vorhanden sind, und löschen Sie sie, wenn Sie sie nicht mehr brauchen.

Überprüfen der Spaltenexpressions

  • Gibt es komplexe Berechnungen in der Liste? Komplexe Berechnungen brauchen Zeit. Es empfiehlt sich, komplexe Berechnungen nicht auf Listen durchzuführen, die häufig verwendet werden. Besser erstellt man dann einen zweiten Ordner, der in der Liste die gebrauchten Berechnungen anstellt.
  • Überprüfen Sie die Expressions. Können Sie optimiert werden?

    Hier ein Beispiel für eine Spaltenexpression und wie sie optimiert werden kann. Eine Expresssion wie z.B. diese auf einer Mitarbeiterliste:

    offeneleistungen->select(phase.boldid=8070)... 

    lädt für jeden Mitarbeiter in der Liste alle offenen Leistungen und filtert diese nach einer bestimmten Phase. Bei grossen Installationen kann man damit Vertec zum Erliegen bringen. Besser ist, zuerst die Phase zu laden und dann nur die offenen Leistungen auf dieser Phase nach dem Mitarbeiter zu filtern:

    Projektphase.allinstances->select(boldid=8070).offeneleistungen->select(bearbeiter=self)... 

    In der Demo-Datenbank lädt die erste Expression beispielsweise 643 offene Leistungen, die zweite nur 27.

Überprüfen der Constraints (Bedingungen)

Constraints können zu erheblichen Geschwindigkeitsproblemen führen. Hinweis auf solche Probleme ist, wenn bestimmte Listen lange für den Aufbau brauchen: Wenn z.B. Projektlisten lange gehen, Leistungslisten aber iO sind, sollte man die Constraints auf Projekten kontrollieren und allenfalls anpassen.

Leistungssummen in Listen

  • Brauchen Sie Leistungssummen? In Spaltenexpressions sind diese nicht zu empfehlen, da der Performance Gewinn beim Berechnen der Summe durch die grosse Anzahl einzelner SQL Anfragen in der Regel überkompensiert wird.
  • Verwenden Sie Summenatribute in den Expressions (zum Beispiel sumWertExt)? Ist die Option "Für Summenattribute beschleunigte Summierung verwenden" in den Systemeinstellungen eingeschaltet?

In diesen beiden Fällen macht das nicht so viel aus, wenn die Liste einfach einmal angzeigt wird. Problematisch ist das nur, wenn die Liste im Hintergrund angezeigt wird, während im Vordergrund Leistungsdaten geändert werden. Leistungssummen werden grundsätzlich neu berechnet, sobald irgendeine Leistung im System verändert wird. Die Neuberechnung erfolgt, wenn die Zahlen der Leistungssumme auch sichtbar sind. In diesem Fall wird die ganze Liste laufend neu berechnet, was zu einem massiven Performance-Verlust führen kann. Das Beste ist in diesem Fall, die Liste im Hintergrund nicht anzuzeigen, sondern zuerst auf eine "unproblematische" Liste zu wechseln, bevor Sie Leistungsdaten ändern.

Expressions auf Berechtigungen

Expressions auf Berechtigungen können zu einer Beeinträchtigung der Performance führen. Das Problem ist, dass bei jedem Zugriff auf ein Member die Berechtigung geprüft werden muss - ein "Zwischenspeichern" geht nicht, weil das Resultat der Expression ja ändern kann zwischen 2 Aufrufen. Insbesondere Lese-Rechte, die auf ganze Klassen vergeben werden (also nicht auf einzelne Felder) müssen so für jedes einzelne Feld erneut überprüft werden.

Kontrollieren Sie, ob Sie Berechtigungen haben, die mit Expressions arbeiten. In diesem Fall sollten Sie die Rechte entsprechend einschränken, also zum Beispiel Schreib- statt Leserecht (welches oft sowieso vorhanden ist, beispielsweise bei Adresseinträgen) oder nur auf einzelne Felder vergeben.

Grundsätzlich gilt: Lese-Rechte auf Klassenebene nicht ohne Angabe der entsprechenden Feldern, insbesondere für Klassen, die entweder in Listen dargestellt werden (wie Leistung, Adresseintrag) oder in Summen verwendet werden (Rechnung).

Das Erfassen von Leistungen ist langsam

Ist die Erfassung von Leistungen mal schnell und dann plötzlich langsam? Achten Sie darauf, was Sie im Hintergrund angezeigt haben. Es könnte sich um eine Liste mit Leistungssummen handeln. Eine genaue Erläuterung dieser Konstellation ist im vorherigen Abschnitt unter "Leistungssummen in Listen" beschrieben.

Die Anzeige eines Projekts oder einer Phase ist langsam

Anzeige von verrechneten Leistungen, Spesen und Auslagen

In den Systemeinstellungen, Sektion Projekt/Mandat, gibt es die Einstellung Verrechnete Leistungen und Spesen anzeigen. Ist diese Option auf Ja, werden auf dem Projekt die verrechneten Leistungen, Spesen und Auslagen in separaten Reitern angezeigt.

Dies kann die Geschwindigkeit für die Anzeige der Projekte und Projektphasen verringern, sobald viele verrechnete Einträge vorhanden sind. Um die Performance zu optimieren, schalten Sie diese Option standardmässig aus. Wenn Sie auf die verrechneten Leistungen, Spesen und Auslagen zugreifen möchten, können Sie diese Option vorübergehend einschalten oder die entsprechende Rechnung aufrufen. Auf der Rechnung sind die verrechneten Einträge immer sichtbar.

Anzeige von Budgetwerten

In den Systemeinstellungen, Sektion Projekt/Mandat, gibt es die Einstellung Summen anzeigen. Hier können Sie definieren, ob die Budgetwerte auf den Projekten und Projektphasen standardmässig angezeigt werden sollen oder nicht. Um die Budgetzahlen anzeigen zu können, muss Vertec aber Leistungen, Spesen und Auslagen der entsprechenden Phase oder des entsprechenden Projekts laden. Deshalb kann eine solche Einstellung mit einer Verlangsamung einhergehen.

Um die Performance zu optimieren, schalten Sie diese Option standardmässig aus. Auf dem einzelnen Projekt und der einzelnen Projektphase kann das übersteuert werden, indem Sie bei "Werte anzeigen?" ein Häkchen setzen. So können Sie die Zahlen nur dann anzeigen lassen, wenn Sie wirklich gebraucht werden.

Eine andere Variante ist das Verwenden der beschleunigten Summierung. In diesem Fall werden die Leistungen, Spesen und Auslagen nicht reingeladen, sondern nur die Summen verwendet.

Das heisst: Die Systemeinstellung Summen anzeigen sollte nur auf JA gestellt werden, wenn auch Für Summenattribute beschleunigte Summierung auf JA gestellt ist.

Aktivitätenliste anzeigen ist langsam

Bei der Gültigkeitsprüfung von Dokumenten, die einer Aktivität zugeordnet sind, wird auch geprüft, ob das verknüpfte File im Filesystem vorhanden ist. Dies kann bei grossen Aktivitätenlisten zu Performance Problemen führen.

In den Systemeinstellungen unter Allgemein gibt es die Einstellung Existenz von Dokumentfiles überprüfen. In dieser Systemeinstellung kann eingestellt werden, ob die Überprüfung stattfinden soll. Sie ist defaultmässig auf Ja. Wird sie auf Nein gesetzt, findet keine Überprüfung mehr statt und Aktivitäten mit Dokumenten ohne zugehöriges File im Filesystem sind trotzdem gültig.

Das Erzeugen eines Eintrags ist langsam

Wenn das Erzeugen von Objekten unerträglich langsam ist, sonst aber alles flott läuft, kann dies durch den von der Server-Firewall geblockten Notif-Port verursacht sein.

Wenn man Vertec auf einem Server installiert, der auch für das interne Netz eine Firewall hat (so z.B. der Fall bei XP, Server 2003 sowie Server 2008), muss der Notif- und allenfalls der XML-Port explizit freigeschaltet werden, damit das läuft. Dazu sollte man den Port und zusätzlich VertecServer.exe freischalten.

Die Information, was auf welchen Ports läuft, finden Sie im Vertec.ini Konfigurationsfile. Dieses befindet sich im Vertec Installationsverzeichnis.

Das Löschen eines Eintrags ist langsam

Kann es sein, dass der Eintrag über einen CustomLink oder einen GenericLink mit einem anderen verbunden ist? Dabei ist es so, dass beim Löschen auch alle "Schwester"-Objekte reingeladen werden. Wenn man also z.B. einen CustomLink / GenericLink hat zwischen Adressen und Bearbeiter, und an einem Bearbeiter hängen 5000 Adressen, so werden bei der Löschung einer solchen alle 4999 anderen auch reingeladen.

Entfernen Sie zuerst die Link-Verbindung zum anderen Objekt manuell, und löschen Sie den Eintrag erst dann.

Verschiedenes ist langsam

Scheint Vertec generell langsam zu sein, Sie können aber nicht genau bestimmen, wo genau? Konnte ein Netzwerkproblem ausgeschlossen werden (siehe oben die Anmerkung über die CPU-Auslastung)?

Vertec ist langsam, Notif bringt Fehler

Läuft Vertec zum Teil sehr langsam, und es erscheinen immer wieder Fehlermeldungen betr. Notif, der nicht laufe. Im Systeminfo steht beim Notif ein Fehler "Socket Error #11001".

Grund dafür ist ein falscher Hostname im INI-File. Der Rechner, auf dem der Notif läuft, heisst einfach anders. Wenn man den Namen korrigiert, läuft der Notif korrekt und Vertec ist auch wieder normal schnell.

Korrupte Indizes

Eine Möglichkeit besteht, dass die Verlangsamung mit korrupten Indizes zu tun hat. Dadurch werden vor allem rechenintensive Vorgänge stark verlangsamt.

SQL:

Sie können mit einem erneuten Konvert die Datenbank Indizes neu erstellen lassen. Führen Sie hierzu einfach einen SQL Konvert aus, ohne die Version zu ändern.

Firebird:

Ein Backup / Restore der Datenbank mit Hilfe des DBTools löscht die Indizes und legt sie neu an. Achten Sie darauf, dass alle Bearbeiter Vertec schliessen, bevor Sie diesen Vorgang durchführen.

Falls auch das keine Abhilfe bringt, kann eine Vergrösserung der Datenbank Page-Size Abhilfe bringen. Die Page-size ist seit einiger Zeit bei Vertec Datenbanken defaultmässig auf 4096 eingestellt. Höhere mögliche Werte sind 8192 und 16384.

Ein kleiner Test hat ergeben, dass im Falle einer grossen Datenbank mit vielen Zusatzfeldern eine Erhöhung der Page-Size auf 16384 nochmals eine drastische Verbesserung der Performance bei der Abfrage von Zusatzfeldern ergibt.

Es spricht eigentlich nicht viel dagegen, die Page-Size auf den Maximalwert von 16384 zu setzen. Die Dokumentation von Firebird erwähnt, dass dieser Wert nur zulässig sei, wenn das I/O System der Rechners 64bit Transfers unterstützt (hat nichts mit 64bit Betriebssystem zu tun). Aber das scheint heutzutage kein Problem zu sein.

Die Page-size kann beim Restore einer Datenbank via IBOConsole oder Commandline angegeben werden. Das Vertec DBTool unterstützt das im Moment noch nicht, das wird in Zukunft noch eingebaut. Per commandline sieht ein Restore (in neues DBFile) mit Pagesize-Option folgendermassen aus:

gbak -c -p 16384 -user SYSDBA -pass password vertec.fbk vertec.fdb

Dies muss nur bei Vertec Versionen vor 5.5 gemacht werden. Der Update auf Version 5.5 führt automatisch ein Backup / Restore durch und setzt die Page-Size herauf.


10.05.2007 | 12.04.2016: Verzögerter Programmstart von Vertec 6.0 bei fehlender Internetverbindung dokumentiert.
Produktlinien: Diverse