Startgeschwindigkeit einer Forms-Anwendung miit einem RAID-System

saftmeister

Nutze den Saft!
Ich habe mal das Log-File in den Notepad++ geladen und mir via Regex-Suche alle Funktionscalls ausgeben lassen (Pattern: ^f). Dann habe ich mal durch die Ergebnis-Liste gescrollt und mir ist vor allem folgender Teil aufgefallen:

Code:
    Line 1065582: f 5563 xConnect.CtrlBackup::.ctor void () 0x09DC26B0 427 2 45738
    Line 1065739: f 5564 xConnect.CtrlBackup::InitializeComponent void () 0x09DC2870 2464 2 172985
    Line 1079104: f 5565 xConnect.CtrlBackup::CtrlBackup_SizeChanged void (Object ) 0x09DC3310 338 2 177754
    Line 1089032: f 5566 xConnect.CtrlBackup::CtrlBackup_Load void (Object ) 0x09DC3478 722 2 51587
    Line 1100271: f 5567 xConnect.CtrlBackup::updateLang void () 0x09DC3760 225 2 179474
    Line 1101321: f 5568 xConnect.CtrlBackup::getServiceStatus void () 0x09DC3858 942 2 182142
    Line 1122098: f 5569 xConnect.CtrlBackup::CtrlBackup_VisibleChanged void (Object ) 0x09DC3C40 304 2 53700
    Line 1130803: f 5570 xConnect.CtrlObserver::.ctor void () 0x09DC3D80 465 2 45738
    Line 1130964: f 5571 xConnect.CtrlObserver::InitializeComponent void () 0x09DC3F68 2393 2 186567
    Line 1144316: f 5572 xConnect.CtrlObserver::CtrlObserver_SizeChanged void (Object ) 0x09DC49B8 338 2 191329
    Line 1154254: f 5573 xConnect.CtrlObserver::CtrlObserver_Load void (Object ) 0x09DC4B20 944 2 51587
    Line 1166777: f 5574 xConnect.CtrlObserver::updateLang void () 0x09DC4F00 2842 2 193048
    Line 1170571: f 5575 xConnect.CtrlObserver::getServiceStatus void () 0x09DC5A38 942 2 195732
    Line 1191600: f 5576 xConnect.CtrlObserver::CtrlObserver_VisibleChanged void (Object ) 0x09DC5E20 351 2 53700
    Line 1191613: f 5577 xConnect.CtrlObserver::observerStatus_Tick void (Object ) 0x09DC5F90 1212 2 199699
    Line 1200054: f 5578 xConnect.FormSPS::initS7Clients void (int32) 0x09DC6478 1576 2 45738
    Line 1200067: f 5579 xapi.dbConnect::getEverything static <UNKNOWN> () 0x09DC6AD0 2152 6 200246
    Line 1206972: f 5580 xapi.dbConnect::getAllCharts static <UNKNOWN> () 0x09DC7350 1661 6 200246
    Line 1214013: f 5581 xapi.OpcChart::.ctor void (xapi.OpcClient) 0x09DC79F8 209 6 201821
    Line 1214020: f 5582 xapi.SpsChart::.ctor void () 0x09DC7AE0 98 6 203367
    Line 1214283: f 5583 xapi.dbConnect::getOpcChartItems static <UNKNOWN> ( void) 0x09DC7B58 1481 6 201821
    Line 1215037: f 5584 xapi.OpcChartItem::.ctor void (int32 String String String String String xapi.OpcGroup) 0x09DC8158 136 6 203498
    Line 1215043: f 5585 xapi.ChartItemProperty::.ctor void () 0x09DC81F0 110 6 203761
    Line 1215054: f 5586 xapi.OpcItem::.cctor static void () 0x09DC8270 173 6 203761
    Line 1215057: f 5587 xapi.OpcItem::.ctor void (int32 String String String String String xapi.OpcGroup) 0x09DC8330 393 6 203761

In der Funktion "xapi.dbConnect::getEverything static <UNKNOWN> () 0x09DC6AD0 2152 6 200246" scheint relativ viel Zeit drauf zu gehen. Die Funktion direkt davor ist "xConnect.FormSPS::initS7Clients". Ich bin mir nicht sicher, ob ich das richtig interpretiere, aber diese Funktion initS7Clients ruft offenbar die Funktion "xapi.dbConnect::getEverything".

Ich habe selbst noch keine .Net-Applikationen geprofiled oder debugged, daher bin ich nur bedingt eine Hilfe. Würde aber gern dazu lernen.
 

pschilling

Erfahrenes Mitglied
Also ich habe ja auch bereits vermutet dass die statischen Funktionen in der xapi.dll irgendwie die Ursache sind.

Allerdings werden die Funktionen initS7Clients und getEverything erst aufgerufen wenn die Login-Form durchlaufen wurde und die erscheint ja auch erst nach knapp ner Minute.

Das Raid-System scheint beim Laden der xapi.dll irgendwelche Probleme zu haben.. aber warum? Bei jeder lahmen Gurke ist die Applikation innerhalb einer Sekunde startklar...
 

saftmeister

Nutze den Saft!
Irgendwie ist auch der Konstruktor von xConnect.CtrlBackup lahm. Ich weiß nicht, ob der letzte Wert in der Zeile die Aufrufzeit in Millisekunden nach dem Start der Applikation ist, aber es ist schon auffällig, dass der Konstruktor nach (augenscheinlich) 45 Sek. augerufen wird und in der Zeile danach der erste Methodenaufruf nach 172 Sek. zu finden ist.
 

pschilling

Erfahrenes Mitglied
Ich werd das Problem für dieses Jahr erst mal auf Eis legen und arbeite an der. Web-Schnittstelle weiter.
Im Januar bekomme ich ja einen Rechner mit RAID-System, da werd ich dann auch effektiver testen können.

Danke für euren Input und kommt gut ins neue Jahr, Bei den Temperaturen wird rutschen ja schwierig ;)
 

pschilling

Erfahrenes Mitglied
So, nachdem ich die letzten Tage ein anderes Projekt in Betrieb genommen habe, habe ich jetzt endlich wieder zeit gefunden..

Also das RAID-System ist aller Wahrscheinlichkeit nach doch nicht de Ursache für die Startverzögerung gewesen..

Ich habe jetzt hier in der Firma ein System (VM) bei welchem die Startverzögerung immer auftritt.
Sobald dieser Rechner einmal eine Internetverbindung hatte verschwindet die Startverzögerung.
Ich vermute, dass eine der dll's versucht eine Internetverbindung aufzubauen um was auch immer zu tun.
Das würde die starke Verzögerung erklären.
Jetzt werde ich erstmal alle beteiligten dll's testen um herauszufinden welche das ist ..
 

saftmeister

Nutze den Saft!
Lass doch mal Wireshark mitlaufen, wen die Applikation gestartet wird. Damit könntest du rausfinden, was die DLL sendet oder empfängt.
 

pschilling

Erfahrenes Mitglied
Jo, ich hab se schon identifiziert.
Das ist die OPC-Bibliothek von Softing (http://industrial.softing.com/de/pr...a-client-und-server-toolkit-fuer-windows.html) die recht teuer war.
Scheint wohl so 'ne Art Kopierschutz zu sein.
Sauerei das dies nirgenswo in deren Dokumentation aufgeführt ist.

War aber auch ein unglücklicher Zufall dass die ersten beiden Rechner bei denen das Problem auftrat beide das RAID-System und beide keinen Internetzugang hatten:(

Na ja, ausser ein paar Tagen und vielen Nerven hab ich ja nichts verloren.

An der Stelle nochmals vielen Dank für eure Anteilnahme und Interesse :)
 

saftmeister

Nutze den Saft!
Ok, aber was ist jetzt die Lösung? Die Rechner ans Netz zu hängen klingt zwar erstmal nach der schnellsten Lösung, aber ist das auch sicherheitstechnisch das Eleganteste? Kann man bei der Library das Timeout steuern?
 

sheel

I love Asm
Sicherheitsmäßig das Beste wär wohl, sein Geld zurückzuverlangen :rolleyes:
(und die Lib nicht mehr zu verwenden)
 
Zuletzt bearbeitet:

Neue Beiträge