Schnittstellengeschwindigkeit

  • Hi,


    wir haben uns ein Skript geschrieben, was uns automatisch Adressbucheinträge anlegt. Wir wollen mehrere hunderttausend Datensätze importieren. Leider ist es so, dass die Schnittstelle vom Greyhound recht langsam ist. Wir schaffen maximal 20 Datensätze pro Sekunde - auch wenn wir parallel mehrere Instanzen auf die Schnittstelle zugreifen lassen.


    Das Problem ist dann weiterhin, dass ein Arbeiten während des Einfügens über die Schnittstelle nicht mehr möglich ist und alles sehr langsam wird.


    Gibt es vielleicht eine Möglichkeit, die Schnittstelle schneller zu machen? Ansonsten müssten wir vermutlich mehrere Nächte lang schrittweise die Daten importieren.

  • Hallo,


    die Schnittstelle ist keine Datenbankschnittstelle. Das ankommende XML muss ja erstmal geparst werden und eine Antwort generiert werden. Bei zwei und mehr Kernen im Server sollte man zudem nichts von den Einfügeoperationen spüren. Beim Einfügen werden diverse Validitätsprüfungen vorgenommen. Ich denke aber 20 Einträge pro Sekunde ist schon ein ordentlicher Wert für Brute-Force Einfügeoperationen. Wir sprechen hier übrigens von 50ms pro Einfügeoperation. Wenn man bedenkt, dass auch die HTTP Anfrage noch bearbeitet werden muss, kann ich hier leider keine Tuningmöglichkeiten mehr erkennen.


    Ich hatte schon mit sogenannten "Schnittstellen" zun tun, die nicht mehr als eine Anfrage (LESEND!) in 2-3 Sekunden beantworten konnten. Das ist übrigens der übliche Fall da draußen. Je größer die Unternehmen, um so langsamer die Schnittstellen.


    Noch eine Frage: Betreibern Sie den GREYHOUND Server und das Script im gleichen Netzwerk, oder gehen die Daten über das Internet?

  • Hi Josh,


    schaut doch mal bitte auf dem Server nach wie es um die Prozessorlast ( den RAM-Verbrauch ) des Systems steht. Ich vermute das der Prozessor durch das Parsing der XML-Daten so ziemlich ausgelastet ist. Sei versichert: Entwicklungstechnisch arbeiten wir am Limit des Machbaren.. Grosse Performancegewinne sind hier nicht mehr machbar - hier ist das XML Format einfach das Problem da es eine Menge Overhead mitbringt. Wenn Prozessor / RAM ausgelastet sind dann kann problemlos über Hardware (mehr Prozessorleistung oder mehr RAM) skaliert werden - GREYHOUND skaliert perfekt in Multiprozessorumgebungen.


    Ich finde 20 Datensätze pro Sekunde übrigens absolut NICHT langsam.. ganz im Gegenteil, das ROCKT bei XML/RPC Schnittstellen. Schneller dürfte der Erst-Import übrigens über den "normalen" CSV-Import gehen - das Aktualisieren einzelner Datensätze kann man dann später über XML lösen.


    Wenn Ihr 20 Datensätze pro Sekunde importiert bekommt, dann macht das ca. 1200 pro Minute. In 100 Minuten sollten also 120.000 Datensätze drin sein - in 600 Minuten = 10 Stunden (=einer Nacht) sollten knapp 720.000 Datensätze an GREYHOUND übergeben werden können..


    Das ist doch schon was..


    Beste Grüße,
    hildebrand

  • Ich wollte damit nicht sagen, dass das langsam ist - ich wollte nur fragen, ob es eventuell noch schneller geht :) (auch wenn ich es oben versehentlich so geschrieben habe)


    Ich starte den Import dann die nächsten Nächte und dann sind die Daten ja drin.