1
响应时间随着在Tomcat 8以下简单的servlet 3的servlet运行Java 8:CPU核心与在Tomcat
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个线程,我预计响应时间会翻倍。
实际上发生在< 4线程/用户是完全不同的。
有1或2个用户,JMeter“图表结果”报告中位数4毫秒。
跟3个用户,中值是38毫秒
具有4个的用户,中位数是53(平均61)
随着8个用户,中值是120(平均135)。
4位和8位用户之间的差异符合我的预期。
但1或2个用户和3或4个用户的区别让我感到惊讶。
关于接下来要做什么的解释或建议?谢谢...
你多少请求作出。我的意思是当你说中位数时什么是样本 –
有1个和2个用户可能有很多东西,可能有任何主要的gc(垃圾收集器)踢在tomcat服务器上。有了3个和4个用户,你可能已经创建了足够的对象,gc会跳过并导致延迟。 –
我建议使用Flight Recorder运行此测试(https://docs.oracle.com/javacomponents/jmc-5-4/jfr-runtime-guide/run.htm#JFRUH164)。它会告诉你时间到了哪里(例如锁定,线程争用,磁盘写入效率低下等)。五分钟的飞行记录通常就足够了 –