如何分析负载下的性能?
Posted
技术标签:
【中文标题】如何分析负载下的性能?【英文标题】:How to profile performance under load? 【发布时间】:2013-02-13 04:23:21 【问题描述】:我有一个 Web 服务器,它有一些请求在重负载下表现不佳。我尝试使用常规的久经考验的技术,但它们存在各种问题。
尝试过的技术
-
Yourkit 中的采样/跟踪分析
我无法在负载下使用分析器,因为只有少数特定请求表现不佳
仅测试单个请求不会重现性能问题
线程转储
我尝试以固定的时间间隔进行线程转储,但如果时间间隔很大,则很难判断到底什么是慢的,如果时间间隔很短,则会过多地影响服务器的性能特征
当服务器处于负载状态时,如何分析单个请求的性能?
【问题讨论】:
APM(应用程序性能管理)工具,如 jennifer、appDynamics... 等,看起来比分析器更适合您的情况。 profiler 旨在调整有限的请求,但 APM 旨在监控和管理系统的性能。 @fglez 它不是一个特定的应用程序容器。问题出在我们的代码中。 @dgregory APM 对我没有帮助,因为我没有试图弄清楚整体性能,实际上我有一个性能不佳的请求,需要深入研究其中的细节。 我发现AspectJ
非常有用。我可以轻松地跟踪方法的进入和退出,并相对快速地深入研究热点。然后我什至可以更改实现,而无需经历完整的编译/构建/部署周期。
@Pyrolistical 不同的服务器(尤其是专有服务器)具有不同的监控/调试/跟踪机制,这可能会对您有所帮助。
【参考方案1】:
看看http://www.spf4j.org,我使用这个库在java中以最小的开销进行连续分析...... 有 api 来监视代码的执行,对性能的影响也最小 我最近为应用配置文件添加了新的可视化:http://blogs.zoltran.com 从trunk获取最新版本并试用!
干杯
【讨论】:
以上是关于如何分析负载下的性能?的主要内容,如果未能解决你的问题,请参考以下文章