PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (Sonstige) - Uploaded.net Upload-Speed



fishfish
27.02.2016, 09:34
Hi! Ich mal wieder 😄

Wollte diejenige unter euch fragen, die per eigenem Skript auf UL.net uploaded, ob ihr auch recht miese Uploadraten habt?
Hatte bisher mit meinem Python Skript dem requests-Modul geuppt und da im Schnitt 10 MByte/s Upstream.
Gestern habe ich das Ganze mal mit PyCurl probiert und bin im Schnitt auf 8 MByte/s Upstream gekommen, wobei ich dachte, PyCurl schneller wäre.
Zum Vergleich: Bei Share-Online komm ich auf 50-80 MByte/s mit dem requests-Modul, mit PyCurl habe ich es noch nicht getestet.

Vlt kann mich ja jemand erleuchten 😄

vlado
27.02.2016, 14:21
Die Server von Share-Online waren schon immer besser als die von Uploaded.

Ich kann dir leider nur dies sagen. Ich hoffe jemand kann dir bei deinem Problem weiterhelfen.

1stAid
27.02.2016, 16:55
Kann ich nicht sagen. Ich laste meine G/bit Server voll aus beim Upload.
Mit mehreren Servern in der Regel keine Probleme. Falsche einstellungen. Zu viele Dateien, zu viele Threads, zuviele Partt, Festplatten voll ,
gibt x Gründe.

fishfish
27.02.2016, 17:20
Naja, geuppt wird bei meinen Skripts immer nur eine Datei, also zu viele Threads/Dateien könnens mal nicht sein

Jana-Maria
27.02.2016, 17:22
Routing?
Was sagt FTP/Zoom oder Webupload?

The Don
27.02.2016, 18:53
Was auch mal sein kann, daß du bei UL einen schlechten Server erwischst. Das sollte aber beim nächsten Part weg sein.
Ich tippe, wie JM aufs Routing.
Wo steht dein Uploadserver?

fishfish
27.02.2016, 20:21
Naja Root steht in NL (Leaseweb), von daher sollte das Routing okay sein. Werde Webupload und Zoom mal testen und die Werte beifügen.

The Don
27.02.2016, 20:33
Hmmm Leaseweb sollte tatsächlich gut sein.

fishfish
27.02.2016, 20:38
An der Server-Konfig kann es auch nicht liegen, sonst wäre ja SO.biz gleich schlecht... Werd dann später mal am Root FTP/Zoom/Webupload testen.

The Don
27.02.2016, 21:47
Hast du bei deinem Script ein Uploadbuffer drin? Wenn ja, wie hoch ist dieser eingestellt?
Wenn nein, bau die Kacke mal ein. ;)

1stAid
27.02.2016, 22:13
Ich tippe auf Fehler im Script. Wobei ich 2 oder max 3 Files gleichzeitig hochlade um die Verwaltungslücke zwischen den Uploads zu schließen. Natürlich ohne Chunks. Bei dem Speed reicht 1 Block. Falls du Einstellungen hast. Probier dich durch.
Vierenscanner mal kurz ausschalten

fishfish
27.02.2016, 22:15
Okay, hab mal die neuesten Daten:
Webupload ~70 MByte/s
Zoom ~ 50-70 MByte/s (schwankt stark)
FTP ~25 MByte/s
PyCurl ~4-5 MByte/s (http://fra***-Server)
PyCurl ~30 Mbyte/s (http://am***-Server)

Beim PyCurl-Skript weiß ich ehrlich gesagt nicht, wie ich da einen Buffer einbauen könnte bzw. ob der interne Buffer nicht ohnehin auf MAX eingestellt ist. Beim requests-Modul müsste ich nachlesen, ob es so einen Buffer gibt und wie man den ändert.

1stAid
28.02.2016, 16:34
Du lädst auf einen festen Server hoch? Oder holst du dir pro Upload einen neuen Server?
Weil du die Server expizit angibst.

fishfish
28.02.2016, 20:15
Nein, nein. Hole mir für jede Datei einen neuen Upload-Server, nur beim Debuggen hab ich mehrmals getestet und den Upload-Server ausgegeben und es gibt meiner Erfahrung nach 2 Arten von Upload-Server: jene mit "http://am..." und mit jene mit "http://fra...".

HaZe
29.02.2016, 19:19
Hast du bei deinem Script ein Uploadbuffer drin? Wenn ja, wie hoch ist dieser eingestellt?
Wenn nein, bau die Kacke mal ein. ;)
Ich weiß zwar nicht wieso, aber der Hinweis ist tatsächlich gar nicht so schlecht. :D



Beim PyCurl-Skript weiß ich ehrlich gesagt nicht, wie ich da einen Buffer einbauen könnte bzw. ob der interne Buffer nicht ohnehin auf MAX eingestellt ist. Beim requests-Modul müsste ich nachlesen, ob es so einen Buffer gibt und wie man den ändert.

Wie man das anpasst kommt auch auf die genutzte Uploadmethode an, ob du ein Streamobject oder einen IOBuffer nutzt. (Sofern beides in Python verfügbar ist, Py-Experten dürfen mich da gern belehren ;) )

Im Grunde ist das Prinzip ja so:
Baue eine TCP Verbindung auf
Wiederhole:
Nimm einen Teil der Daten
Lege in TCP Paket
Sende Paket ab
Bis "Alle Daten gesendet"
Schließe TCP Verbindung

Je nach dem wie groß dieser "Teil der Daten" ist (und wie schnell deine Verbindung), kann es sein, dass der Aufwand des Verwaltungsoverhead beim Aufteilen größer ist als das eigentliche Senden.
Ist das der Fall, sollte man größere Buffer einstellen.

Die meisten Browser etc machen das Automatisch, daher wäre das eine mögliche Fehlerquelle.

fishfish
29.02.2016, 19:32
An und für sich macht mein Skript das auch so (StreamObject und Buffer beide probiert). Nur ich krieg es irgendwie nicht gebacken einen eigene Buffe rsize/Chunk size vorzugeben, wobei laut PyCurl-Doku die Buffer size automatisch maximal gewählt wird...
Netter Pseudocode übrigens 😄

HaZe
29.02.2016, 20:17
Ich hab mich mal ein bisschen durch die cURL Mailinglists gewühlt.
Das Problem scheint eine Abwärtskompatibilität von cURL zu sein und ist nicht per Parameter einstellbar, sondern muss einkompiliert werden.

libcurl development talk. How to program using libcurl, and how to develop libcurl further (http://comments.gmane.org/gmane.comp.web.curl.library/38145)

fishfish
29.02.2016, 21:03
Danke für die Info! Heißt für mich leider eine andere Sprache, da ich nicht wirklich im Quellcode von Python-Modulen rumspielen will :(

jbs
29.02.2016, 21:06
Wie wärs mit Sockets? Da kannst/musst alles selbst machen...

fishfish
29.02.2016, 21:22
Auch eine Idee, aber wirklich Low-Level und das Erlernen würde sicher länger dauern, als den Code in einer anderen Sprache zu schreiben :D Aber mal gucken :)

jbs
29.02.2016, 21:53
Also bei Sockets gibts nicht wirklich viel zu lernen. LiveHTTP Headers für Firefox kann dir da am besten helfen. Die Anfragen musst dann nur nachbauen. Also einfach genau gleich hinschicken wie der Browser. und bei den Parts/Chunks kannst dann die Größe immer selbst bestimmen :)

fishfish
29.02.2016, 22:03
Gerade gemerkt, dass es einfach nur Copy&Paste ist. Wird zwar dauern, bis es funktioniert, aber danke erstmal. Danach kann ich ja mal den Speed über Socket testen :D