![]() |
|
|
|||||||
| Netzwerkprogrammierung Fragen zu Client-/Server-Programmierung sowie zu verteilten Anwendungen (RMI, CORBA etc.) |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 05.11.2007
Beiträge: 1.449
Abgegebene Danke: 0
Erhielt 19 Danke für 19 Beiträge
|
Hi,
ein Java-Programm muss regelmäßig relativ große Datenmengen von einem Server laden. Das geschieht über SCP. Zur Zeit findet das über das Linux-Programm scp statt, aber eine reine Java-Lösung wäre schöner.Ich habe bisher drei Java-Implementierungen getestet: Trilead (gibts nicht mehr, aber wir haben noch die letzte freie Version), Jsch und sshtools (J2SSH). Das Problem dabei ist, dass die Downloadrate bei allen drei Implementierungen miserabel ist. Mit scp erhalte ich etwa 1 bis 1.1MB/s - das Maximum, welches der Server liefert -, mit Trilead etwa 280k, mit Jsch 65k und mit sshtools bis etwa 150k. Bei keiner der Implementierungen kann ich hohe CPU-Auslastung feststellen, daher wundert es mich sehr, wieso die Downloadraten so schlecht sind.Vielleicht kennt jemand eine bessere Implementierung, die auch hohe Datenraten liefert. Danke schonmal mK
__________________
PNs mit Fragen zu Threads werden ignoriert. Projekte: Classreader | more to come... stalled... |
|
|
|
| #2 (permalink) | |
|
Stammbenutzer
Viertel Gigabyte
Registriert seit: 16.09.2006
Beiträge: 3.659
Abgegebene Danke: 0
Erhielt 52 Danke für 52 Beiträge
|
ich mach das immer mit ant
SCP Task asso... wird dir nix helfen die verwenden auch jsch.. mhn aber du kannst es ja mal ausprobieren, ob das schneller geht
__________________
Meine Beiträge stehen unter der Beerware Lizenz! |
|
|
|
| #3 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 19.01.2007
Beiträge: 1.563
Abgegebene Danke: 1
Erhielt 36 Danke für 36 Beiträge
|
Hm, so Blackbox-Diagnosen sind immer ein wenig heikel.
Wie ist denn der Test aufgebaut (eine große Datei? viele kleine Dateien?), wie sieht zum Vergleich der scp Befehl aus und wie verwendest du die API? Es wäre schon interessant zu wissen, wo denn die Performance verloren geht... [EDIT] Ok, schon was gefunden... SourceForge.net: SSHTools: Detail: 1734970 - Need changes for better performance of large file upload
__________________
Grüße, ++++++++++ [ >+++++++>++++++++++>+++>+<<<<- ] >. -----. >++++++++++++++. ++. So funktioniert das mit Foren/Newsgroups/Mailing Lists etc.: smart-questions_de Geändert von FArt (12.03.2010 um 09:23 Uhr) |
|
|
|
| #4 (permalink) | |||
|
Stammbenutzer
Megabyte
Themenstarter
Registriert seit: 05.11.2007
Beiträge: 1.449
Abgegebene Danke: 0
Erhielt 19 Danke für 19 Beiträge
|
Ja, es ist schon klar, dass ein pauschales "alles lahm" nicht viel bringt.
Ich muss relativ große Dateien übertragen. Im Schnitt mehrere hundert MB, daher ist der Unterschied 200k - 1MB auch sehr relevant. Der Test ist so einfach wie möglich aufgebaut. Ich verbinde mich und rufe das jeweilige Äquivalent einer getFile() -Methode auf. Oft erhält man dabei einen InputStream , da habe ich z. B. mit verschiedenen Buffer-Größen experimentiert (1-16k) - ohne Erfolg. Manchmal kann man die lokale Speicherung der Bibliothek überlassen, da waren die Ergebnisse auch immer gleich.Ich werde mir bzgl. sshtools mal anschauen, was der verlinkte Patch macht. Aktuell ist halt Version 0.2.9 und der Patch ist für 0.2.7, von daher muss ich sehen, was das bringt. Dennoch wundere ich mich einfach, wieso die Performance aller von mir getesteten Implementierungen so grottig ist. Wenn irgendwelche Entschlüsselungsroutinen schlecht geschrieben wären und die ganze CPU beanspruchen würden... aber ich kann gar nichts erkennen. Einen Fehler meinerseits würde ich natürlich nicht ausschließen, aber gerade wegen weiterer Fehlerquellen habe ich die Tests sehr einfach gehalten. Ich kann ja spaßeshalber mal ein Beispiel für sshtools zeigen:
scp -P port user@host:remote/file /tmp/flubs . Nichts besonderes also. Gerade der ScpClient hat neben get() und put() keine weiteren Methoden. Bei den anderen sieht es ähnlich aus.Was mir noch einfällt... vielleicht hat das sogar noch ganz andere Gründe. Intern geht die Übertragung auch mit den Java-Implementierungen sehr schnell. Nur bei dem bestimmten Server, von dem die Daten geholt werden müssen, tritt das Problem auf. D. h. die Java-Implementierungen machen da noch irgendwas anders als das Kommandozeilentool. Ich erwähns nur nebenbei, aus der Ferne kann man das sicher nicht diagnostizieren. Ich habe da leider gar keinen Ansatz...
__________________
PNs mit Fragen zu Threads werden ignoriert. Projekte: Classreader | more to come... stalled... |
||
|
|
|
| #5 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 18.01.2007
Beiträge: 1.763
Blog-Einträge: 1
Abgegebene Danke: 0
Erhielt 14 Danke für 14 Beiträge
|
Evtl wird eine andere Verschlüsselung verwendet? Dass könnte die Unterschiede erklären.
__________________
Satzzeichen sind keine Rudeltiere, verdammt nochmal!!! |
|
|
|
|
| Lesezeichen |
Latex Maths & Physics Editor ...
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Bibliothek für Graph Visualisierung gesucht | as182005 | Allgemeine Java-Themen | 3 | 23.09.2009 19:13 |
| Bibliothek gesucht Ana_lysieren von wss. Referenzen | Jochen Merter | Allgemeine Java-Themen | 2 | 23.05.2008 12:45 |
| PDF Formular Erzeugung Java Bibliothek gesucht | onkelkarle | Allgemeine Java-Themen | 0 | 02.03.2007 16:45 |
| Aktienkurse via Web - Bibliothek gesucht | vogella | Allgemeine Java-Themen | 1 | 18.02.2007 14:08 |
| Termin Kalender Bibliothek gesucht | rog | AWT, Swing & SWT | 4 | 28.03.2006 15:30 |