如何解决Tomcat 8上的连接性能问题?

时间:2018-04-06 16:12:31

标签: java tomcat

我刚安装了一台新服务器(Xeon E5-2630 v4,256GB RAM,Ubuntu 18,Tomcat 8,Java 8)来取代目前已有4年​​历史的服务器(i5-2400,8GB RAM,Ubuntu 14,Tomcat) 7,Java 7)并且在测试期间发现,在一个大型测试页面上,新服务器比旧服务器慢10倍。稍后进行一些挖掘,也就是在我的开发机器(Java 8)上运行Tomcat 8(与apt-get一起安装)的情况,但是在运行Spring Tool Suite捆绑的tc服务器(也基于Tomcat8!)时则不行。

在样本页面上测试结果。所有4个实例上的相同spring应用程序war文件。在本地运行,应用程序在控制器中记录页面生成时间,并且在所有4上大致相同,因此问题必须在jsp生成或连接中(很可能是imo):

time wget http://localhost:8080/proteus/testpage 
  • 旧服务器:4,643,048字节5.88M / s 0.8s
  • 新服务器: 16s
  • 中的4.43M 276KB / s
  • Dev Machine tcServer(基于Tomcat8):4.43M 4.24MB / s 1.0s
  • 开发机器Tomcat 8:4.43M 318KB / s 14s

对于同一台机器上那么大的差异,我必须在连接设置/配置中遗漏一些非常基本的东西但是我在过去2天的大部分时间里一直在进行故障排除而没有取得任何进展。

如果有人对什么有什么建议,我会非常感激。在dev机器上工作似乎最简单,所以我从那里添加了一些信息。

问候。

在tcServer上将堆设置为-Xmx768m,在Tomcat 8上设置为-Xmx2048m。

tcServer版本信息:

Using CATALINA_BASE:   /home/mjames/sts-bundle/pivotal-tc-server-developer-3.1.5.RELEASE/tomcat-8.0.36.A.RELEASE
Using CATALINA_HOME:   /home/mjames/sts-bundle/pivotal-tc-server-developer-3.1.5.RELEASE/tomcat-8.0.36.A.RELEASE
Using CATALINA_TMPDIR: /home/mjames/sts-bundle/pivotal-tc-server-developer-3.1.5.RELEASE/tomcat-8.0.36.A.RELEASE/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /home/mjames/sts-bundle/pivotal-tc-server-developer-3.1.5.RELEASE/tomcat-8.0.36.A.RELEASE/bin/bootstrap.jar:/home/mjames/sts-bundle/pivotal-tc-server-developer-3.1.5.RELEASE/tomcat-8.0.36.A.RELEASE/bin/tomcat-juli.jar
Server version: Pivotal tc Runtime 3.1.5.RELEASE/8.0.36.A.RELEASE
Server built:   Jun 29 2016 20:36:49 UTC
Server number:  8.0.36.0
OS Name:        Linux
OS Version:     4.4.0-116-generic
Architecture:   amd64
JVM Version:    1.8.0_162-8u162-b12-0ubuntu0.16.04.2-b12
JVM Vendor:     Oracle Corporation

tomcat 8版本信息:

Using CATALINA_BASE:   /usr/share/tomcat8
Using CATALINA_HOME:   /usr/share/tomcat8
Using CATALINA_TMPDIR: /usr/share/tomcat8/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.0.32 (Ubuntu)
Server built:   Sep 27 2017 21:23:18 UTC
Server number:  8.0.32.0
OS Name:        Linux
OS Version:     4.4.0-116-generic
Architecture:   amd64
JVM Version:    1.8.0_162-8u162-b12-0ubuntu0.16.04.2-b12
JVM Vendor:     Oracle Corporation
来自server.xml的

连接器(两者都相同,将它们拆分为基础)

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"  
           URIEncoding="UTF-8" redirectPort="8443" />

2 个答案:

答案 0 :(得分:0)

检查默认值

Tomcat tc服务器打包为不同的产品:

  • Tomcat是一个非常通用且可重配置的servlet容器。

  • tc Server是一个更全面,更生产就绪的Tomcat兼容应用服务器。

请参阅此处more extensive comparison of the 2 servers

因此,他们的默认值是不同的。默认情况下,Tomcat被配置为较小的东西,而tc Server默认情况下会做出更大胆的假设。

请参阅Tomcat's default propertiestc Server default ones(以及由可用选项减少量导致的眩晕后),例如, tomcat 200 作为 tc服务器使用 300 时的最大线程数。

您可以想象,有许多设置会影响测试页的性能

答案 1 :(得分:0)

找到一个解决方案,如果不是答案 - 我从来没有深入到问题的tomcat 8.0,但我从新服务器上的tar文件安装了8.5.29,并且性能就可以了。在2秒内测试页面下载(而不是Tomcat 8.0上的16s)仍然比英国的旧测试页面慢一点,但它在德国,它至少可以接受,我可以尝试在以后进一步优化日期...

完全相同的JRE(OpenJDK 1.8.0_162),War文件和server.xml,除setenv.sh中的以下内容外,其他所有内容都是默认配置

CATALINA_OPTS="-Xmx4096m -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.1,TLSv1.2 -Djdk.tls.client.protocols=TLSv1.1,TLSv1.2 -Djava.awt.headless=true"