CPU核心与Tomcat上的响应时间

时间:2016-05-23 12:12:49

标签: tomcat servlets jmeter

在运行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个用户之间的区别让我感到惊讶。

关于下一步尝试的解释或建议?感谢...

1 个答案:

答案 0 :(得分:1)

这是因为您正在使用Math.random()尝试使用ThreadLocalRandom

https://docs.oracle.com/javase/tutorial/essential/concurrency/threadlocalrandom.html