2010-11-24 12 views
2

Ich entwickle ein relativ schnelles Spiel (Flash/Apache Mina Server Backend) und ich habe einige Schwierigkeiten, einen genauen Benchmark der Art der Bandbreite zu erhalten, die meine aktuelle Einrichtung verwenden würde.Benchmarking Apache Mina Gesamtbandbreite

Meine Frage ist: Wie bekomme ich eine genaue Benchmark der Bandbreite für meine Tests erforderlich? Was ich jetzt mache, würde keinen Overhead berücksichtigen?

Auf der Nachricht gesendete/empfangene Methoden I

[out/in]Bandwidth+= message.toString().getBytes().length; 

mache ich dann alle 250 Millisekunden, um die aktuellen Werte drucken (denn das ist, wie häufig „Welt“ Updates zur Zeit fertig ist).

Mit 10 „Monster“ alle zufällig bewegen und 1 Spieler zufällig bewegen ich diesen Ausgang bin immer .. (1 Sekunde Fenster hier)

In bandwidth: 1647, Outgoing: 35378 
In bandwidth: 1658, Outgoing: 35585 
In bandwidth: 1669, Outgoing: 35792 
In bandwidth: 1680, Outgoing: 35999 

So streng auf die Größe der Nachrichten handeln (abgehend) übergeben wird, die auf etwa 621 Bytes/Sekunde oder (621/10) 62,1 Bytes pro Sekunde pro sich ständig bewegendem Objekt auf dem Bildschirm pro Person wirkt. Dies scheint ein wenig niedrig, eine gute High-Speed-Verbindung könnte mehr als 1000 Objektupdates pro Sekunde bei dieser "Rate" kein Problem behandeln.

Antwort

0

Hier riecht etwas definitiv fischig. Entsprechend der von ihnen gelieferten Leistungsprüfung: here mina ist fähig zu 20K + 405 Byte Anfragen pro Sekunde auf ~ 10 Verbindungen - viel mehr als das, was Sie sehen.

Meine Vermutung ist, dass es hier eine Art von Theading \ Timing Problem gibt, das die Verzögerung verursacht. Ich würde die Hilfe einer Paketverfolgungsanwendung wie wireshark in Anspruch nehmen und sehen, ob Ihre Beobachtungen im Code mit den rohen Netzwerkdaten in Verbindung stehen. Ich würde auch versuchen, die Server-Seite nach Möglichkeit mit mehr Daten zu "überfluten" - dies könnte einen Einblick geben, wo das Problem liegt.

Ich hoffe, das hilft, viel Glück.