【问题标题】:Tomcat performance tuningTomcat 性能调优
【发布时间】:2018-09-19 16:00:52
【问题描述】:

我正在调整Tomcat 7的性能,服务器配备24核和32 GB内存,我的测试界面是一个没有任何进程(立即响应)的RESTful服务,server.xml的配置如下.. .

<Connector port="8088" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           enableLookups="false"
           compression="off"
           maxConnections="8192"
           maxThreads="1000"
           tcpNoDelay="true"/>

以及 JVM 配置...

-Xms8192M -Xmx16384M.

JMeter 的主机是另一台与上述服务器规格相同的计算机。 而JMeter堆的配置是-Xms12218m -Xmx24426m

我的 JMeter 测试计划是 240 个请求同时发送到 RESTful 接口一次,但我注意到,前 100 个的平均响应时间不超过 50 毫秒,但在接下来的 100 个中增加到 1 秒,并且剩下的时间为 3 秒。

我很好奇这种现象,有没有配置错误或者建议?

提前致谢。

【问题讨论】:

  • 我不认为设置一个具有 16-24 GB 内存的进程是一个好主意。为什么不将应用程序集群化,将请求发送到许多服务器?
  • 谢谢你的回复,我要知道单节点的极限,这样才能用最少的服务器来满足要求。

标签: performance tomcat jmeter


【解决方案1】:

你可以配置:

acceptCount="2048"

maxConnections="1024"

maxConnections 与maxThreads 有关系,maxThreads 的配置应与您的业务和CPU 的核心数相匹配,如8X 或16X。 acceptCount 是等待连接数。

请注意,maxConnections 和 maxThreads 并不是越大越好,这取决于您的服务器硬件的性能。

【讨论】:

  • 欢迎来到 StackOverflow,感谢您的贡献。如果您只添加几句话来解释您的建议,您的答案将会大大改善。虽然对您来说很明显,但对提问者或其他寻求相同问题帮助的人来说可能并不明显。
【解决方案2】:

您的服务器必须处理的请求越多,处理每个请求所需的时间就越长。这是正常行为。

您如何同时启动线程?斜坡时间 = 0 还是 1?

当您开始触发大量线程时,您的客户端需要更长的时间来发出请求,而您的服务器需要更长的时间来响应。

在启动时,服务器能够非常快速地响应所有请求,因为它无事可做,直到达到阈值。这些请求中的每一个都将很快完成,并且同一个线程将发送另一个请求。同时,服务器正在响应前一波线程,而更多线程正在排队。现在它必须在仍然响应请求的同时管理队列,因此达到了另一个阈值。

基本上,启动一堆线程并同时触发请求对于服务器来说并不是一个非常现实的用例,除了少数情况。当它相关时,您可以期待这种行为。

【讨论】:

  • 我们的案例是设备的身份和授权服务,会有一万多台。我们的目标是响应时间可以少于 1 秒。非常感谢您的回复。
猜你喜欢
  • 2019-02-05
  • 1970-01-01
  • 2015-06-07
  • 2021-07-22
  • 2013-05-26
  • 2013-10-17
  • 2018-03-06
  • 2016-06-25
  • 2018-04-20
相关资源
最近更新 更多