Daten per API senden, parallel

OnDemand

Top Contributor
Hallo zusammen,

wir senden an externe API viele viele Daten. Derzeit nach einander, das dauert aber zu lange. Wir machen das nun testweise über einen Taskexecutor mit 5 Threads. Ist dadurch auch wesentlich schneller. Nun könnte man ja auch sagen, wir senden 50 parallel. Das Zielsystem kann auf verschiedenen Servern hosten, sodass nicht klar ist wie viel das Ziel verkraftet, ehe es abschmiert.

Der Hersteller des Zielsystems sagt auch "kommt drauf an, was für ein Server drunter liegt". Nun wollen wir dem User die Möglichkeit geben, die Anzahl der Threads einzugeben. Dabei gibts garantiert Kandidaten, die denken mit ihrem 5 EUR Hosting können sie 100 threads drauf los jagen. Ein anderer User hat vielleicht ne mega Maschine drunter die 500 Threads ab kann.

Wie könnte man herausfinden oder einschätzen was der Zielserver ab kann? Mir fällt da nur herantasten ein. Hat jemand ähnliche Erfahrungen?
 

OnDemand

Top Contributor
Entweder der Kund oder dessen Admin/Hoster. Also wenns knallt ist es zu spät. Sollte möglichst nicht passieren :D aber ohne Zusammenarbeit mit dem Hoster wird das wohl sehr schwer.
 

Robert Zenz

Top Contributor
Da muesst ihr halt einmal eine gewisse Basis-Linie etablieren. "Maschine mit 16 Kernen und 64GB RAM kann x Threads" und dann davon weggehen. Ihr muesst ja wahrscheinlich auch Ruecksicht auf die restliche Last auf der Maschine nehmen. Also ich wuerde mal behaupten das 12-16 Threads gleichzeitig kein Problem sein sollten, egal was ihr da ansprecht, aber das ist eine Zahl welche gut klingt und ich mir aus dem Hintern gezogen habe.

Der absolute Overkill waere natuerlich wenn ihr Profiling einbaut. Wenn zum Beispiel euer senden mit einem Thread 5 Stunden dauert, dann startet ihr mal mit einem Thread und mess mal x Anfragen lang die durchschnittliche Antwort-Zeit, dann erhoeht ihr auf zwei, und lasst das eine Weile laufen ob die Antwort-Zeit relativ stabil geblieben ist, dann vier, sechs, acht, zehn bis zu einem Limit (sagen wir mal 16). Wenn die Antwort-Zeit zu hochgegangen ist, geht ihr wieder auf die vorherige Anzahl zurueck. Aber sowas zahlt sich nur aus wenn der Task ansonsten 5 Stunden aufwaerts laufen wuerde, und ihr das aber unbedingt in weniger Zeit abfackeln muesst.
 

OnDemand

Top Contributor
In dem Fall hat der Benutzer aber eine garantierte Verfügbarkeit von Ressourcen. Meinetwegen hat 3Gb RAM gebucht, also bekommt er die auch. Das könnte man irgendwie mit einbeziehen
 

Oneixee5

Top Contributor
Ich habe gerade ein änliches Problem. Dabei kommt es natürlich immer auf die konkrete Anwendung an aber ich habe für mich entschieden - die verbügbaren Cores mal 2 ist die Anzahl der Threads. Normalerweise würde man nicht so hoch gehen, es laufen aber immer wieder Datenbankabfragen und ich gehe davon aus, wenn die DB arbeitet hat der Server Zeit für anderes Zeug.
Java:
int cores = Runtime.getRuntime().availableProcessors();
Ich denke so komme ich mit der festgelegten Mindestgröße des RAM nicht in Schwierigkeiten. Man könnte natürlich noch den verfügbaren Speicher einbeziehen, z.B.: Wenn verfügbarer Speicher >= (Mindestgröße des RAM * 2) ? (cores * 1.5) : cores. Es laufen auf dem Zielserver aber evtl. noch andere Prozesse, die sollen ja auch noch ein Chance auf angemessene Antwortzeiten haben.
 

OnDemand

Top Contributor
Danke, aber bei mir ist eher das Problem, dass ich mich an die Gegenseite anpassen muss. Da hilft es nix zu wissen, wie viel ich als Sender kann, sondern muss schauen was das Gegenüber verkraftet.
 

Oneixee5

Top Contributor
Danke, aber bei mir ist eher das Problem, dass ich mich an die Gegenseite anpassen muss. Da hilft es nix zu wissen, wie viel ich als Sender kann, sondern muss schauen was das Gegenüber verkraftet.
Ja die Infos frage ich von der Gegenseite ab bzw. sind für Support sowieso verfügbar und baue dann die jeweilige Anzahl an Verbindungen auf.
 

OnDemand

Top Contributor
Ah ok. Das ist ne gute Idee. Das Gegensystem läuft in PHP, da gibts auch irgendwie Childprozesse die man beachten sollte schätz ich und der PHP Memory der zugewiesen wurde
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Daten über TCP/IP senden Netzwerkprogrammierung 3
fLooojava Daten an ein Arduino im selben Netzwerk senden Netzwerkprogrammierung 1
S Server - Mehrere Klassen sollen Daten senden und empfangen Netzwerkprogrammierung 25
P Socket Daten senden mit ServerSocket? Netzwerkprogrammierung 2
D daten per post senden Netzwerkprogrammierung 3
M Senden von Daten nicht direkt möglich? Netzwerkprogrammierung 6
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
F Daten senden und empfangen mit Applet Netzwerkprogrammierung 8
C Flash Daten an Java senden, wie serialisieren? Netzwerkprogrammierung 3
E rxtx serielles senden von Daten Netzwerkprogrammierung 2
D Socket, Daten über BufferedWriter senden Netzwerkprogrammierung 18
M Einfachste Möglichkeit aus'm Applet Daten an Server senden Netzwerkprogrammierung 6
A daten an php script per post senden und ausgabe einlesen Netzwerkprogrammierung 6
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
Z Kann nicht Daten vom Server lesen Socket Netzwerkprogrammierung 10
B Daten an Javaprogramm per URI Aufruf übergeben Netzwerkprogrammierung 7
N websocket - keine Daten mehr nach ca 80 Sekunden Netzwerkprogrammierung 0
C Spezielle Daten aus Website entnehmen Netzwerkprogrammierung 5
H Daten auf einer Webseite eintragen Netzwerkprogrammierung 11
A Socket Daten in Textdokument speichern? Netzwerkprogrammierung 1
T Socket Java Programm hängt sich auf bei dem versuch von einem Socket scanner Daten zu erhalten. Netzwerkprogrammierung 1
J Daten von einem HTML-Textfeld abrufen Netzwerkprogrammierung 3
S Fakturierungsprogramm - Daten aktuell halten (blutiger Anfänger) Netzwerkprogrammierung 1
D Mit Server Daten austauschen Netzwerkprogrammierung 4
K Server liest Daten nicht Netzwerkprogrammierung 6
L HTTP Daten an Server übergeben Netzwerkprogrammierung 2
R Daten von Cloud laden Netzwerkprogrammierung 5
X Daten können nicht sofort empfangen werden Netzwerkprogrammierung 1
P Socket Best Practice: Daten bündeln Netzwerkprogrammierung 5
E Verfügbarkeit von Daten in Streams Netzwerkprogrammierung 4
F Daten aus Internetseiten auslesen Netzwerkprogrammierung 56
S Server Client Daten hin und herschicken Netzwerkprogrammierung 2
S Seltsames Verhalten beim Empfangen von Daten über DataInputStream Netzwerkprogrammierung 12
H Daten an Textfeld einer Webseite schicken Netzwerkprogrammierung 2
A versch. Daten im Stream erkennen Netzwerkprogrammierung 2
J Applet soll Daten auf Server ablegen - einfachster Weg fuer n00bs? Netzwerkprogrammierung 4
F Socket Daten über verschiedene IP's schicken Netzwerkprogrammierung 5
F UDP Daten kommen nicht an Netzwerkprogrammierung 22
E Socket OutputSream abbruch.Wegen zuviel !empfangener! Daten? Netzwerkprogrammierung 10
C Client zu Client Daten übertragen Netzwerkprogrammierung 13
S Thread, Daten vom Socket lesen Netzwerkprogrammierung 2
S Socket XML-Daten und Parameter an Server schicken Netzwerkprogrammierung 3
M Objekt über Object-Stream, empfange "alte" Daten Netzwerkprogrammierung 2
P HttpClient - Daten einer Website "unvollständig" Netzwerkprogrammierung 5
P Server/Client Daten empfangen, wenn Daten gesendet werden Netzwerkprogrammierung 9
K Socket Daten lesen ohne Längenangabe Netzwerkprogrammierung 19
T RMI Effizenteste Übertragung von Daten Netzwerkprogrammierung 6
A Socket Client Server Connection wird aufgebaut aber keine daten geschickt. Netzwerkprogrammierung 5
B Socket Daten empfangen funktioniert nicht richtig - wo liegt der Fehler? Netzwerkprogrammierung 7
Kr0e Versenden von Daten übers Netzwerk Netzwerkprogrammierung 30
E Daten kommen anders an als gesendert ?! Netzwerkprogrammierung 6
S HttpURLConnection POST splittet Daten in zwei Pakete Netzwerkprogrammierung 9
F POST-Daten sende Netzwerkprogrammierung 3
E HTTPS Debuggen (verschlüsselte Daten anzeigen)? Netzwerkprogrammierung 12
N Per POST -Methode Daten an den Web-Server übertragen. Netzwerkprogrammierung 9
Iron Monkey Große Daten ins Vector füllen Netzwerkprogrammierung 4
D Daten, die mit PHP erzeugt werden, mit Java auslesen Netzwerkprogrammierung 8
M Ethernet Daten abfangen Netzwerkprogrammierung 13
I Problem beim empfangen von Daten (Zahlen) Netzwerkprogrammierung 7
S Daten per GET-Methode Netzwerkprogrammierung 2
H Server soll Daten schicken, aber wie? Netzwerkprogrammierung 47
M Socket schließt bevor Daten komplett geladen Netzwerkprogrammierung 5
G TCP Verbindung überprüfen OHNE daten zu verschicken Netzwerkprogrammierung 11
M Daten übers Netz verschlüsselt übertragen? Wie? Netzwerkprogrammierung 18
J Post-Daten an URL schicken Netzwerkprogrammierung 2
U Image erzeugen aus empfangenen Daten Netzwerkprogrammierung 7
A Wie werden Daten versendet? "Crashcode" Netzwerkprogrammierung 4
D Frage: Buffered Reader --> Wie komm ich an die Daten (Byt Netzwerkprogrammierung 3
G unvollständige Daten: Http Client-Server-Kommunikation Netzwerkprogrammierung 2
E Multi-Part Form-Daten mit HttpURLConnection Netzwerkprogrammierung 6
A Datenverlust (zuviele Daten!) über Sockets Netzwerkprogrammierung 4
T Daten über GSM verschicken Netzwerkprogrammierung 4
P Verschiedene Daten über einen Stream Netzwerkprogrammierung 4
M Verliere Daten mit WinXP Netzwerkprogrammierung 10
O eingehende Daten speichern Netzwerkprogrammierung 3
D UDP-Daten anzeigen Netzwerkprogrammierung 2
D Daten per Server- Client nur als byte verschicken? Netzwerkprogrammierung 3
M Socket Senden an alle verbundenen Clients Netzwerkprogrammierung 3
S Socket Bilder über Socket Senden Netzwerkprogrammierung 0
E Socket Befehl senden und antowrt bekommen ! Netzwerkprogrammierung 1
L Strings an Server senden und in MYSQL speichern? Netzwerkprogrammierung 3
L Socket Nachrichten senden Netzwerkprogrammierung 3
D Socket Message an einen Server senden? Netzwerkprogrammierung 8
J HTTP Befehl via HTTP senden ohne Browser öffnen Netzwerkprogrammierung 3
B Java+Grbl: G-Code Befehle mit Java an Arduino senden und lesen Netzwerkprogrammierung 1
M Socket Bilder senden Netzwerkprogrammierung 1
H HTTP REST Jersey - PUT-Beispiel von Client senden Netzwerkprogrammierung 0
W Socket Byte Array senden Netzwerkprogrammierung 2
G Mail senden funktioniert nicht mit SSL Netzwerkprogrammierung 7
M MultiClient Server - Senden an alle Clients Netzwerkprogrammierung 8
X UDP - Zu großes Paket senden Netzwerkprogrammierung 1
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
M Teilnehmerliste vom Server auch an alle Clients senden Netzwerkprogrammierung 0
I Kleine Dateien senden Netzwerkprogrammierung 3
K ByteArray über Netzwerk senden klappt nicht Netzwerkprogrammierung 5
S Server-Client: Image senden Netzwerkprogrammierung 2
B Socket BufferedImage senden "ohne speichern" Netzwerkprogrammierung 7
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
Z Probleme beim Senden von Nachrichten an den Server Netzwerkprogrammierung 9
K Socket Senden und abspeichern Netzwerkprogrammierung 34

Ähnliche Java Themen

Neue Themen


Oben