Tipps zur Performance Optimierung
Produktlinie
Standard
|Expert
Betriebsart
CLOUD ABO
|ON-PREMISES
Module
Leistung & CRM
Budget & Teilprojekt
Fremdkosten
Ressourcenplanung
Business Intelligence
Es gibt verschiedene Komponenten, die einen Einfluss auf die Gesamtperformance des Systems haben können. Falls gewisse Teile negativ hervorstechen oder das Gesamtsystem eine schlechte Performance aufweist, ist es wichtig, zu eruieren, was genau langsam ist und welche Einflussmöglichkeiten auf die Performance bestehen.
Je nach Betriebsart: On-Premises (Betrieb durch den Kunden) oder Cloud Abo (Betrieb durch Vertec), ergeben sich verschiedene Einflussmöglichkeiten auf die Performance.
Nachfolgend eine grafische Darstellung der beiden Varianten. Die Farben zeigen, wer auf welchen Teil der Performance Einfluss nehmen kann.
Auf die blauen Bereiche hat nur Vertec einen Einfluss: Nur Vertec kann Einfluss nehmen auf die Business-Logik, also wie sich z.B. etwas berechnet oder wie die Daten gehandhabt werden. Beim Cloud Abo Szenario hat Vertec die Verantwortung für den Betrieb; die oberen Bereiche bleiben sich aber gleich. Das bedeutet: Auch mit einer guten Server- und Netzwerkperformance kann man in Vertec Dinge tun, die jetzt oder in fünf Jahren nicht performant sind. |
|
Auf die orangen Bereiche hat nur der Kunde oder - falls Teile an einen externen Dienstleister ausgelagert wurden - dieser Dritte einen Einfluss. Die orangen Komponenten liegen ausserhalb der Reichweite von Vertec bzw. des Vertec Betreuers. | |
Bei den grünen Bereichen besteht eine gemischte Verantwortung: Customizing-Möglichkeiten kann Vertec insofern beeinflussen, als dass wir performante Customizing-Möglichkeiten zur Verfügung stellen bzw. Optimierungen vornehmen, wenn wir sehen, dass gewisse Customizing-Möglichkeiten so genutzt werden, dass sie nicht performant sind. Die Kunden haben in diesem Bereich einen Einfluss auf die Anforderungen. Bei Features sollte die Performance immer als zusätzliche Anforderung eingebaut und das Feature entsprechend geprüft werden. Auch bei bestehenden Installationen kann es sich lohnen, Optimierungsmöglichkeiten zu prüfen. Hier ist auch der Vertec Betreuer in der Verantwortung, eine möglichst performante Umsetzung zu gewährleisten. Dazu gehört, gewisse Anforderungen auch abzulehnen, wenn offensichtlich ist, dass diese jetzt oder in Zukunft nicht performant sein werden. |
In diesem Artikel werden Performanceprobleme behandelt, welche mit dem Customizing zu tun haben. Informationen zur Performance bezüglich Netzwerk finden Sie im Artikel Performance im Netz.
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.
Versuchen Sie herauszufinden, wo in Vertec das Performance-Problem liegt. Nutzen Sie dafür unser Interaktives Performance Analysetool oder nachfolgende Liste.
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.
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.
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:
Im Vertec unter Einstellungen
> 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.
Wenn Vertec.Desktop.exe auf dem Fileserver liegt und von dort gestartet wird, können sich Probleme mit dem Filesharing auf die Start-Performance auswirken.
Die Vertec Desktop App sollte nie über das Netzwerk gestartet werden. Verwenden Sie stattdessen die Vertec Cloud App oder die Vertec Web App.
Falls es unumgänglich ist, die Vertec Desktop App auf einem Client zu verwenden, führen Sie eine entsprechende Client-Installation durch.
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.
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.
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).
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.
Der Ordner ist ein Einzelordner. Es sollen die Einträge angezeigt werden. Es handelt sich um einen:
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".
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 .
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.
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.
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)...
Das Python Script Ordnerperfomance testen ermöglicht es, die Performance eines (über die ID angegebenen) Ordners zu ermitteln. Als Resultat wird eine Liste zurückgeliefert mit der Ladezeit der einzelnen Spalten. Weitere Information zu diesem Skript finden Sie im Artikel Script: Ordnerperformance testen .
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.
Problematisch ist es, 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.
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).
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.
In den Systemeinstellungen, Section 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 aus der Leistungserfassung in separaten Unterordnern 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.
In den Systemeinstellungen, Section Projekt/Mandat, gibt es die Einstellung Summen anzeigen. Hier können Sie definieren, ob bei den Budgetwerten auf Projekten und Projektphasen der Vergleich mit den Ist-Werten standardmässig angezeigt werden sollen oder nicht. Um diese Zahlen berechnen zu können, muss Vertec 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.
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.
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 Vertec.CloudServer.exefreischalten.
Die Information, was auf welchen Ports läuft, finden Sie im Vertec.ini Konfigurationsfile. Dieses befindet sich im Vertec Installationsverzeichnis.
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.
Scheint Vertec generell langsam zu sein, Sie können aber nicht genau bestimmen, wo genau?
Kann ein Netzwerkproblem ausgeschlossen werden? Siehe dazu den Artikel Performance im Netz .
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.
Im Zusammenhang mit Windows 8.1 auf Laptops kann folgendes Problem auftreten: Der Windows 8.1 Energiesparmodus setzt automatisch den Flugzeug-Energiesparmodus, wenn die Funkverbindungen ausgeschaltet werden. Das kann z.B. der Fall sein, wenn sich der Laptop im LAN und am Strom befindet. Trotzdem wird dieser Energiesparmodus automatisch gesetzt und beeinträchtigt die Performance von Vertec massiv ( und natürlich auch von jedem anderen Programm, welches lokal viele Ressourcen beanspruchen würde).
Löscht man den Engergiesparplan, kommt er einfach nächstes Mal wieder, wenn die Funkverbindung ausgeschaltet wird. Man muss also jedesmal, wenn man die Funkverbindungen ausschaltet, den Flugzeug-Energiesparmodus wieder abstellen.
Betroffen von diesem Problem sind die Windows Clients Desktop App und Cloud App, welche wegen der Verwendung von WPF und damit zusammenhängend der benötigten Grafikleistung so stark auf die Prozessordrosselung zu reagieren scheinen. Die Web App, welche auf dem Server auch WPF verwendet, hingegen nicht visuell, und die genau gleiche Business-Logik, läuft hingegen problemlos.
Eine Möglichkeit besteht, dass die Verlangsamung mit korrupten Indizes zu tun hat. Dadurch werden vor allem rechenintensive Vorgänge stark verlangsamt.
MS 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 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. Informationen dazu finden Sie im Artikel über Firebird Pages und Buffersize .
Im Vertec unter Einstellungen
> System Info
finden Sie unter [LoadedObjects] eine Liste aller Objekte, die geladen wurden. Bei langsamen Operationen kann es sich lohnen, die geladenen Objekte vor und nach der Operation zu vergleichen, um einen Hinweis darauf zu erhalten, wo das Performanceproblem herkommen könnte. Das genaue Vorgehen finden Sie im Artikel Performance Analyse mit Loaded Objects
.
Da ist einmal die Server-Hardware, die Datenbank (Firebird oder MS SQL) sowie das Netzwerk. Darauf aufbauend kommen die Vertec Serverdienste sowie die unterschiedlichen Clients. Der sogenannte Fat-Client, die Desktop App, welche mit dem Datenbankserver direkt Kontakt aufnimmt und die gesamte Businesslogik lokal verarbeitet, sowie die Cloud-Clients, bei welchen die Applikationslogik im Cloud Server läuft und die eigentlichen Clients als Thin-Clients nur die Darstellung übernehmen. Diese beiden grundlegend verschiedenen Client-Arten haben natürlich je ein eigenes Performance-Verhalten, z.B. bezüglich des Betriebs über eine schmale VPN Verbindung (Vertec in WAN Systemen).
Der Aufbau der Software ist bei beiden Client-Arten gleich: Es gibt die Business-Logik, der Object Space (in dem die Vertec-Objekte leben) sowie das Customizing im Vertec selbst (Listen, Abfragen, Auswertungen etc.). Bei den Cloud Clients ist für die Darstellung auf den Endgeräten ein weiteres Netzwerk involviert.
Beachten Sie einmal die CPU-Auslastung von Vertec.Desktop.exe, während Sie auf dem Client mit Vertec arbeiten (im Task-Manager). Ist die CPU-Auslastung von Vertec.Desktop.exe niedrig, während Sie im Vertec warten müssen, kann davon ausgegangen werden, dass es sich um ein Problem mit dem Netzwerk, dem Server bzw. der Datenbank handelt. Beachten Sie dazu den Artikel Performance im Netz.
Ist die CPU-Auslastung von Vertec.Desktop.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).
Bei der Performance der Cloud Clients (Cloud App und Web App) ist die Latenz des Netzwerks entscheidend, nicht die Bandbreite.
Da bei den Cloud Clients die Sessions auf dem Server laufen, sollte sichergestellt sein, dass der Server über die entsprechende Leistung verfügt (mind. 100-200 MB RAM pro Session).
Kontrollieren Sie, dass der Cloud Server Dienst gestartet ist und Notif keine Fehler meldet.