java servlet的html响应时间非常高
我有一个servlet,它需要处理大量的简单http请求。我有时必须将其作为json响应返回,有时作为html返回 整个servlet的代码是相同的,但最后我有一个if语句:java servlet的html响应时间非常高,java,html,json,tomcat,servlets,Java,Html,Json,Tomcat,Servlets,我有一个servlet,它需要处理大量的简单http请求。我有时必须将其作为json响应返回,有时作为html返回 整个servlet的代码是相同的,但最后我有一个if语句: if(json) { request.setContentType("application/JSON"); String json_response = String.format("some string %s", some_other_string); out.print(jso
if(json) {
request.setContentType("application/JSON");
String json_response = String.format("some string %s", some_other_string);
out.print(json_response);
} else {
request.setContentType("text/html");
String html_response = String.format("<html><body>some text %s</body></html>", some_other_string);
out.print(html_response);
}
我的连接池设置为:
<Resource name="jdbc/testdb"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/table?autoReconnect=true"
username="user"
password="pass"
maxActive="250"
maxIdle="60"
minIdle="30"
maxWait="10000"
/>
我在专用服务器上运行它。具有12gb ram和ssd的四核。Tomcat 8和Sun jdk 8
当我发送json响应请求时,服务器每秒处理200个请求没有问题。
但是当我发送html响应请求时,当负载小于每秒10个请求时,响应时间大约为80毫秒,但是当超过这个时间时,响应时间平均为3000-4000毫秒
我对servlet的执行进行了计时,它在1ms内执行。而且html响应处于高负载,因此3000毫秒应该来自其他地方
我尝试将html放入jsp文件中,但这并没有改变任何事情
我无法让visualVM运行以检查servlet的性能,但由于它在1ms内执行,我认为问题应该在Tomcat配置中的某个地方
有人有办法解决这个问题吗
谢谢您是如何测量响应时间的?@juan.facorro我使用的是来自Monitis第三方应用程序的http正常运行时间监视器。我还检查了页面本身,当我执行json请求时,它会立即加载,而使用html时,加载只需要几秒钟。由于没有太多信息可以得出任何结论,我建议使用一个简单的工具,比如在监视服务器上的CPU使用情况时点击端点。如果CPU很高,那么进行一些分析以找到瓶颈。对不起,我没有更具体的建议。@juan.facorro哦,是的,我忘了提到这个非常重要的细节。cpu和内存使用率低于10%。所以我不知道为什么A..Juang.Frofro运行AB工具有问题:AB—N 100000 - C 200主机名/路径这是ApacheBench,版本2.3版权1996 Adam Twiss,宙斯技术有限公司,授权给Apache软件基金会,基准测试主机名患者完成10000个请求完成20000个请求完成30000个请求完成40000个请求完成50000个请求完成60000个请求完成70000个请求完成80000个请求完成90000个请求完成100000个请求完成100000个请求