问题描述
所以我遇到了一些我不理解的性能问题。
我有一个 SpringBoot Rest API 应用程序,我正在测试一个 GET 请求,该请求进行一些外部服务调用。无论我在测试中投入多少用户,它都有稳定的 TPS。我投入的用户越多,响应时间就越长,但 TPS 保持稳定,应用永远不会慢到爬行。
然而,为了测试基准性能,我更改了 API,因此它不会进行任何外部服务调用并仅返回一个空字符串。响应时间从 300-400 毫秒提高到 30 毫秒,TPS 飙升。但是,它现在不能在很长一段时间内处理超过 10 个用户。 如果我给它超过 10 个用户,性能会随着时间的推移而降低到爬行,尽管如此简单的 GET 请求返回一个空字符串。
这里会发生什么?这是正常行为吗,我如何才能找到更多信息并进一步调试。谢谢!
解决方法
但是现在不能长时间处理超过 10 个用户
经典 memory leak,使用 APM tool 或分析器工具,如 JProfiler 或 YourKit - 它应该为您提供有关导致问题的函数的更多信息。
或者(或另外)使用静态 code analysis tool,它可能会检测未关闭的句柄、连接、静态对象、没有 hashCode() 或 equals() 的设计不佳的对象实现的功能等