FTP dauert ewig - nun nicht mehr (Problem erkannt)

Begonnen von grauerwolf, 02. Dezember 2016, 13:44:52

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

grauerwolf

Hallo,
ich sammle Daten auf dem Raspberry mit Codesys und schicke, wenn das Array voll ist, die Daten (zwischenzeitlich geschrieben in ein lokales File) per FTP zu einem NAS. Das Ganze logge ich und stelle fest (auch in der Visualisierung) das der FTP-Schreibvorgang über 1Minute dauern kann bei 1200 Byte Filegröße.
2016.12.02 12:51:53 : Logfile zum NAS gesendet in T#1m36s98ms

Ist etwas über so ein Problem bekannt ??
Übrigens geht die Übertragung immer erfolgreich zu Ende.

Viele Grüße
Thomas


peewit

hallo

normal ist das nicht !

beschreibe mal dein verwendetes system (Hardware , Software , Oscat lib versionen)
in welchen task läuft der ftp baustein und welchen zykluszeit hast du dort

kannst du mal eine wireshark aufzeichnung machen

grauerwolf

Hallo peewit,

Danke für Deine Antwort. Ich werde mal versuchen, alles das zu beantworten, was Du mir aufgetragen hast - ausser das mit wireshark, da muss ich noch üben!

1. System: Raspberry 2 mit Codesys 3.5.9
2. Oscat network.lib  1.2.1.0
3. FTP-Baustein läuft im  Main-Task bei Zykluszeiten um 1ms (das sollte eigntlich schnell genug sein, deshalb habe ich FTP nicht in einen extra Task geschoben).

Task             letzte Zykluszeit        Durchschnittl. Zykluszeit        Max. Zykl.zeit        Min. Zykluszeit       Max. Jitter
MainTask                 1025                             909                                     7219                       604                  329  alles µs

Dann habe ich mal im FTP-Client ein bissel geloggt:
2016.12.06 10:19:46 :   Logfile via FTP durch Handstart zu NAS senden                           
2016.12.06 10:19:46 : Activate !! FTP-Step 0                                                           
2016.12.06 10:19:46 : DNS_CLIENT.DONE !! FTP-Step 20                                             
2016.12.06 10:19:46 : FTP Steuerkanal eingerichtet !! FTP-Step 20                                   
2016.12.06 10:20:02 :  >>>  FTP-Step 210                                                           
2016.12.06 10:20:03 : FTP-Step 200                                                                 
2016.12.06 10:20:03 :  >>>  FTP-Step 210                                                           
2016.12.06 10:20:03 : FTP-Step 200                                                                 
2016.12.06 10:20:04 :  >>>  FTP-Step 210                                             
2016.12.06 10:20:04 : FTP-Step 200                                                                   
2016.12.06 10:20:04 :  >>>  FTP-Step 210                                                             
2016.12.06 10:20:05 : FTP-Step 200                                                           
2016.12.06 10:20:05 :  >>>  FTP-Step 210                                                       
2016.12.06 10:20:05 : FTP-Step 200                                                             
2016.12.06 10:20:05 :  >>>  FTP-Step 210                                                   
2016.12.06 10:20:06 : FTP-Step 200                                                         
2016.12.06 10:20:06 :  >>>  FTP-Step 210                                                 
2016.12.06 10:20:06 : FTP-Step 200                                                         
2016.12.06 10:20:07 :  >>>  FTP-Step 210                                                           
2016.12.06 10:20:07 : FTP-Step 200                                                                 
2016.12.06 10:20:07 :  >>>  FTP-Step 210                                                     
2016.12.06 10:20:08 : FTP-Step 200                                                       
2016.12.06 10:20:08 :  >>>  FTP-Step 210                                             
2016.12.06 10:20:08 : FTP-Step 200                                                                 
2016.12.06 10:20:08 :  >>>  FTP-Step 210                                                           
2016.12.06 10:20:09 : FTP-Step 200                                                                   
2016.12.06 10:20:09 :  >>>  FTP-Step 210                                                             
2016.12.06 10:20:09 : FTP-Step 200                                                                                                 
2016.12.06 10:20:10 :  >>>  FTP-Step 210                                                                                 
2016.12.06 10:20:10 : FTP-Step 200                                                                                                       
2016.12.06 10:20:10 : warten bis gesendet, FTP-Step 300                                                   
2016.12.06 10:20:11 : Service closing control ...FTP-Step 320                                       
2016.12.06 10:20:12 : Done ...FTP-Step 900                                                         
2016.12.06 10:20:12 : Logfile zum NAS gesendet in T#26s398ms  Größe:9600           


Aus meiner Sicht liegt es wirklich nur am Zyklus, wo wahrscheinlich gesendet wird.

Vielleicht kannst Du aus diesen Hinweisen was herausfinden, was mir hilft oder wo ich noch suchen sollte ??
Vielen Dank
Thomas



grauerwolf

Hallo,
mein FTP-Problem hat sich in Wohlgefallen aufgelöst. Jetzt kann ich so schnell Daten übertragen, wie ich es nervlich ausgalten kann. Das Problem lag an einer viel zu langen Zykluszeit (150ms). Ich berauschte mich an den echten Zyklus-Nutzzeiten (siehe weiter oben), erkannte aber erst jetzt, das FTP offensichtlich immer mal wieder die CPU benötigt und nicht nur Früh und Abends.
Ich habe das ganze FTP-Gerödel in eine extra TASK gelegt und dort mit 1ms Zykluszeit regelrechte Übertargungsrekorde erreicht (Dauer im 500ms-Bereich für 20-60 KB).
Allerdings habe ich dann auch bemerkt, das im LINUX FTP tatsächlich mit seinem Task so 10-20% CPU-Zeit sich krallt.

15479 root     -70   0   27680  18904   2296 S  0,0  2,0   0:00.00 CAAEventTask
23913 root     -67   0   27680  18904   2296 R 11,8  2,0   2:03.11 FTP_TAsk
23914 root     -67   0   27680  18904   2296 S  0,7  2,0   0:06.70 MainTask


Jetzt nutze ich 5ms und der FTP-Prozess holt sich ca. 1-3 % CPU-Zeit. Und die Geschwindigkeit ist auch zu ertragen.
Wer hätte das gedacht...
Viele Grüße
Thomas


peewit

hallo

schön das es nun läuft


meine erste vermutung -> zykluszeit kontrollieren         war somit der richtige tip !

ich habe mir schon einige andere ftp_Client bausteine von verschiedenen herstellern angesehen

ich habe aber keinen gesehen der irgendwas besser kann  als der oscat FTP-Client

grauerwolf

Hallo peewit,

meine erste vermutung -> zykluszeit kontrollieren

war schon richtig. Aber gibt es nicht schon Erfahrungen, wie groß(eher klein) die Zykluszeit für vernünftiges kopieren (was immer der Einzelne unter "vernünftig" versteht...) sein müsste. Es wird ja wohl so sein, das irgendeine Blockgröße pro Zyklus transportiert wird. Und damit sollte man sofort abschätzen können, das man irgendwas falsch eingestellt hat., wenn es zu lange dauert.  Das kann u.U. dem einen oder anderen helfen, so eine Information.

Ich habe den FTP_Client dahingehend ergänzt, das ich das locale File mit "append" an das remote File auf dem Server anhängen kann. Wenn das nicht schon drin ist (und ich es übersehen habe) könnte das durchaus noch standardmäßig rein kommen. So als Hinweis...

Viele Grüße
Thomas

peewit

man muss bedenken das es immer einige Zyklen benötigt um alle schritte und flanken gesteuerte Prozesse zu verarbeiten. weiters muss man die Datenverarbeitung mittels tcp-Bausteine auch mit einbeziehen.
somit addieren sich relativ viele notwendige sps Zyklen

erkenntniss:
wenn dann aber eine relativ kleine Datei bei der Übertragung viel zeit benötigt dann sind es normalerweise verhältnismäßige hohe Zykluszeiten oder Störung bei der Datenübertragung.