Performancetests Client/Server

Saxer

Mitglied
Hallo zusammen,

ich mache gerade etliche Performancetests einer Server-Client Umgebung.
Der Server beantwortet Anfragen der Clients und hierbei messe ich die Zeit der Ausführung der Anfragen auf dem Server.
Jeder Client hat einen eigenen Thread auf dem Server.
Eine Anfrage wäre z.B. Server zähle bis 1000000...und gib mir die letzte Zahl zurück.

Nun ergeben meine Tests, dass der Server z.B.
für einen Client 0,912312 sek benötigt um die Anfrage auszuführen
bei 1000 Clients wenn ich die Gesamtzahl durch 1000 addiere aber nur 0,8231482 sek benötigt für eine Anfrage.

Ich kann mir gerade noch keinen Reim daraus machen, ausser das Java irgendwie warm läuft und darum dann schneller arbeitet.

Vielleicht weiß ja hier jemand Rat?

Dankeschoen im voraus,
mfg Saxer
 
Hi Saxer,

ich würde auf den ersten Blick das Multithreading dafür verantwortlich machen und näher zwei mögliche Gründe nahelegen:

  1. Die simple parallele Ausführung auf mehreren (simulierten) Kernen bringt Performanceverbesserung
  2. Der Anteil fremder Prozesse im Kern verringert sich und erhöht damit den Teil der für dein Programm zur Verfügung stehenden Rechenzeit. Kurzum: bei einem anfragenden Client und 50 weiteren Prozessen, muss sich der Client-Prozess jedes Mal wieder hinter den 50 Hintergrundprozessen des Servers anstellen um in den Prozessor zu gelangen. Und so kommen diese Hintergrundprozesse nach jeder genutzten Rechenzeit wieder dran.
    Stehen allerding die anderen 999 Client ebenfalls mit in der Wartschlange sind die Hintergrundprozesse nicht bei jedem einzelnen Schritt an der Reihe, sondern erst bei jedem 1000sten.
Java würde ich das also nicht zurechnen...


Grüße
Carron
 
Zurück