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, während Sie mit Vertec arbeiten (im Task-Manager).
CPU-Auslastung ist niedrig
Wenn 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 hoch, während Sie im Vertec warten müssen, kann davon ausgegangen werden, dass es wirklich Vertec ist, das langsam ist.
Versuchen Sie herauszufinden, wo das Performance-Problem liegt. Nachfolgende Liste soll Ihnen helfen, dem Problem auf die Spur zu kommen.
- Vertec startet langsam auf, ist aber nachher schnell
- Ein Ordner öffnet sich langsam
- Liste wird langsam angezeigt
- Das Erfassen von Leistungen ist langsam
- Die Anzeige eines Projekts oder einer Phase ist langsam
- Aktivitätenliste anzeigen ist langsam
- Das Erzeugen eines Eintrags ist langsam
- Das Löschen eines Eintrags ist langsam
- Verschiedenes ist langsam
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 einem anderen Überordner zuordnen.
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.
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 einem anderen Überordner zuordnen.
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 komlexe 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?
Ü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.
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 ueberpruefen. 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 GenericLink mit einem anderen verbunden ist? Dabei ist es so, dass beim Löschen auch alle "Schwester"-Objekte reingeladen werden. Wenn man also einen 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 (GenericLink-) 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.
| erstellt: | 10.05.2007 |
|---|---|
| geändert: | 10.12.2010 |
| Produktlinien: | Diverse |
