【发布时间】:2013-02-13 04:23:21
【问题描述】:
我有一个 Web 服务器,它有一些请求在重负载下表现不佳。我尝试使用常规的久经考验的技术,但它们存在各种问题。
尝试过的技术
- Yourkit 中的采样/跟踪分析
- 我无法在负载下使用分析器,因为只有少数特定请求表现不佳
- 仅测试单个请求不会重现性能问题
- 线程转储
- 我尝试以固定的时间间隔进行线程转储,但如果时间间隔很大,则很难判断到底什么是慢的,如果时间间隔很短,则会过多地影响服务器的性能特征
当服务器处于负载状态时,如何分析单个请求的性能?
【问题讨论】:
-
APM(应用程序性能管理)工具,如 jennifer、appDynamics... 等,看起来比分析器更适合您的情况。 profiler 旨在调整有限的请求,但 APM 旨在监控和管理系统的性能。
-
@fglez 它不是一个特定的应用程序容器。问题出在我们的代码中。
-
@dgregory APM 对我没有帮助,因为我没有试图弄清楚整体性能,实际上我有一个性能不佳的请求,需要深入研究其中的细节。
-
我发现
AspectJ非常有用。我可以轻松地跟踪方法的进入和退出,并相对快速地深入研究热点。然后我什至可以更改实现,而无需经历完整的编译/构建/部署周期。 -
@Pyrolistical 不同的服务器(尤其是专有服务器)具有不同的监控/调试/跟踪机制,这可能会对您有所帮助。
标签: java performance web-applications profiling thread-dump