我正在做一个小时的负载测试,观察到一个事务的响应时间与预期值相比很长。为什么会这样?即使 GC、线程和系统资源(CPU 和内存)利用率正常,可能是什么原因。
如何分析呢?
Numerous。最明显的是:
- 数据库查询速度慢 - 使用数据库监控工具查看数据库级别发生的情况
- 应用程序代码存在问题(内存泄漏、大型对象、"繁重"函数) - 使用探查器工具遥测重新运行测试,并尽可能收集有关 JVM 堆、线程、对象等的所有信息。线程转储可以揭示应用程序卡住的位置
- 它甚至可能是网络问题,响应时间包括连接时间和延迟(到第一个字节的时间)等指标,因此由于网络容量低甚至路由器故障,您可能会获得更长的响应时间