负载测试Java Web应用程序 - 查找TPS / Avg事务响应时间

时间:2010-04-20 12:54:32

标签: load load-testing tps

我想在Java中构建自己的负载测试工具,目的是能够在整个开发周期中加载测试我正在构建的Web应用程序。 Web应用程序将接收服务器到服务器的HTTP Post请求,我想找到它的每秒启动事务(TPS)容量以及avrerage响应时间。

Post请求和响应消息将采用XML格式(我不认为它真的适用于:) :)。

我编写了一个非常简单的Java应用程序来发送事务并计算它能在一秒钟内发送的事务数(1000毫秒)但是我不认为这是加载测试的最佳方法。我真正想要的是在同一时间发送任意数量的交易 - 即10,50,100等。

任何帮助将不胜感激!

哦,这是我目前的测试应用代码:

    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) {

        }
    }
}

1 个答案:

答案 0 :(得分:1)

您的代码中存在一些问题。使用System.currentTimeMillis()是不好的选择,因为它使用系统计时器,其精度为1毫秒,但精度约为10-20毫秒。您应该使用System.nanoTime()进行此测量。此外,负载测试工具应该能够在多线程环境中测试代码。

所以,你应该使用open source tools:)