Frage

Ich mag mein eigenes Lasttest-Tool in Java mit dem Ziel, den Bau von zu Belastungstest eine Web-Anwendung in der Lage, ich während des gesamten Entwicklungszyklus bin Gebäude. Die Web-Anwendung wird von Server zu Server HTTP POST-Anfragen werden empfangen, und ich mag seine Start-Transaktion pro Sekunde (TPS) Kapazität finden zusammen mit der avgerage Reaktionszeit.

Die Post Anfrage- und Antwortnachrichten in XML werden (ich nicht‘denken, das ist wirklich anwendbar aber :)).

Ich habe eine sehr einfache Java-Anwendung geschrieben Transaktionen zu senden und zählen, wie viele Transaktionen sie in der Lage waren jedoch in einer Sekunde (1000 ms) senden Ich glaube nicht, das ist der beste Weg, um Belastungstest. Wirklich, was ich will, ist eine beliebige Anzahl von Transaktionen genau zur gleichen Zeit senden - d. H 10, 50, 100 usw.

Jede mögliche Hilfe würde geschätzt!

Oh, und hier ist mein aktueller Test-App-Code:

    Thread[] t = new Thread[1];

    for (int a = 0; a < t.length; a++) {
        t[a] = new Thread(new MessageLoop());
    }
    startTime = System.currentTimeMillis();
    System.out.println(startTime);
    for (int a = 0; a < t.length; a++) {
        t[a].start();
    }
    while ((System.currentTimeMillis() - startTime) < 1000 ) {

    }

    if ((System.currentTimeMillis() - startTime) > 1000 ) {
        for (int a = 0; a < t.length; a++) {
            t[a].interrupt();
        }
    }
    long endTime = System.currentTimeMillis();
    System.out.println(endTime);
    System.out.println("Total time: " + (endTime - startTime));
    System.out.println("Total transactions: " + count);

private static class MessageLoop implements Runnable {
    public void run() {
        try {
            //Test Number of transactions

            while ((System.currentTimeMillis() - startTime) < 1000 ) {
                // SEND TRANSACTION HERE
                count++;
            }
        }
        catch (Exception e) {

        }
    }
}
War es hilfreich?

Lösung

Es gibt einige Probleme in Ihrem Code. Es ist schlechte Wahl zu verwenden System.currentTimeMillis() wie es System-Timer verwendet werden, die haben Genauigkeit von 1 Millisekunde, aber Genauigkeit etwa 10-20 Millisekunden. Sie sollten System.nanoTime() für diese Messungen verwenden. Und lädt auch Werkzeug Prüfung sollte in Multithread-Umgebung zu Testcode kann.

Also, sollten Sie verwenden Open-Source-Tools :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top