在运行Java 8的Tomcat 8上使用以下简单的servlet 3 servlet:
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet(value="/min", name="helloServlet")
public class HelloServlet extends GenericServlet {
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
double j = 0;
for (int i=0 ; i<99999 ; i++) {
j += Math.random();
}
res.getWriter().println("Hello world!!" + j);
}
}
我使用JMeter(在单独的主机上)发送请求
在具有超线程禁用的4个物理内核的处理器上,我预计响应时间与1到4个JMeter线程/用户相似(因为有4个内核)。有8个线程,我预计响应时间会加倍。
事实上,&lt; 4线程/用户所发生的事情是完全不同的。
对于1或2个用户,JMeter&#34;图表结果&#34;报告中位数为4毫秒。
有3个用户,中位数为38毫秒
有4位用户,中位数为53(平均61)
有8个用户,中位数为120(平均135)。
4到8个用户之间的差异符合我的期望。
但是1或2个用户与3或4个用户之间的区别让我感到惊讶。
关于下一步尝试的解释或建议?感谢...
答案 0 :(得分:1)
这是因为您正在使用Math.random()尝试使用ThreadLocalRandom
https://docs.oracle.com/javase/tutorial/essential/concurrency/threadlocalrandom.html