提问者:小点点

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


我刚刚安装了一台新服务器(至强E5-2630 v4,256GBRAM,Ubuntu 18,Tomcat 8,Java8)来替换当前4年的旧服务器(i5-2400,8GBRAM,Ubuntu 14,Tomcat 7,Java7),在测试过程中发现,在一个大的测试页面上,新服务器比旧服务器慢10倍以上。稍后进行了一些挖掘,这也是在我的开发机器(Java8)上运行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 in 0.8s
  • 新服务器:4.43M276KB/s in 16s
  • 开发机器tcServer(基于Tomcat8):4.43M4.24MB/s在1.0
  • 开发机Tomcat 8:4.43M318KB/s in 14s

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

如果有人对该看什么有任何建议,我将不胜感激。在开发机器上工作似乎最简单,所以我从那里附加了一些信息。

问候。

堆在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个答案

匿名用户

Tomcat和tc Server打包为不同的产品:

>

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

    TC Server是一个更完整、更适合生产的Tomcat兼容应用服务器。

    有关2台服务器的更广泛比较,请参阅此处。

    因此,它们的默认值是不同的。Tomcat默认配置为一个更小的东西,而tc Server默认做了更大胆的假设。

    请参阅Tomcat的默认属性与tc Server的默认属性(以及在可用选项数量减少导致的眩晕之后),例如,tomcat的最大线程数为200,而tc服务器使用300。

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

  • 匿名用户

    找到了一个解决方案,如果不是一个确切的答案-我从来没有得到的问题与tomcat 8.0的底部,但我安装了8.5.29从一个tar文件在新的服务器和性能是确定的。测试页面下载在2秒(相对于16秒Tomcat 8.0)仍然比旧的慢一点在UK但它是在德国,它是可以接受的至少,我可以尝试和优化进一步在以后的日期…

    完全相同的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"