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)。它會告訴你時間到了哪裏(例如鎖定,線程爭用,磁盤寫入效率低下等)。五分鐘的飛行記錄通常就足夠了 –