加载测试Java Web应用程序 - 查找TPS / AVG交易响应时间
-
28-09-2019 - |
题
我想在Java中构建自己的负载测试工具,目的是能够加载我在整个开发周期中正在构建的Web应用程序。 Web应用程序将接收服务器到服务器HTTP POST请求,我想在Avgerage响应时间以及Avgerage响应时间以及Avgerage响应时间中找到其启动交易(TPS)。
帖子请求和响应消息将在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) {
}
}
}
解决方案
您的代码中存在一些问题。使用是不好的选择 System.currentTimeMillis()
因为它使用具有系统计时器 精确 1毫秒,但 准确性 约10-20毫秒。您应该使用 System.nanoTime()
为此测量。而且,加载测试工具也应能够在多线程环境中测试代码。
所以,你应该使用 开源工具 :)
不隶属于 StackOverflow