【问题标题】:Performance Testing - TPS Slowing to a crawl despite API returning only an empty string?性能测试 - 尽管 API 只返回一个空字符串,但 TPS 还是慢了下来?
【发布时间】:2021-03-26 15:26:49
【问题描述】:

所以我遇到了一些我不理解的性能问题。

我有一个 SpringBoot Rest API 应用程序,我正在测试一个进行一些外部服务调用的 GET 请求。无论我在测试中有多少用户,它都有稳定的 TPS。我扔给它的用户越多,响应时间就越长,但 TPS 保持稳定,应用程序永远不会慢到爬行。

但是,为了测试基准性能,我更改了 API,因此它不会进行任何外部服务调用并且只返回一个空字符串。响应时间从 300-400 毫秒提高到 30 毫秒,TPS 猛增。但是,它现在不能在很长一段时间内处理超过 10 个用户。 如果我给它的用户超过 10 个,性能会随着时间的推移而下降到爬行状态,尽管返回空字符串的 GET 请求如此简单。

这里会发生什么?这是正常行为吗?我怎样才能找到更多信息并进一步调试。谢谢!

【问题讨论】:

  • 能否提供tomcat的配置和版本?我猜这是因为 max-connections 限制。

标签: spring-boot rest jmeter performance-testing blazemeter


【解决方案1】:

但是它现在不能在很长一段时间内处理超过 10 个用户

经典的memory leak,使用APM tool 或像JProfilerYourKit 之类的分析工具 - 它应该为您提供有关导致问题的功能的更多信息。

另外(或除此之外)使用静态code analysis tool,它可能会检测未关闭的句柄、连接、静态对象、设计不佳且没有实现hashCode()equals() 函数的对象等。

【讨论】:

  • 如果返回空响应怎么会是内存泄漏? GET 请求的控制器方法实际上就是:return new ResponseObject();就是这样
猜你喜欢
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多