java - 在服务器端分析应用程序

标签 java profiling server-side hprof

我有一个客户端,它是多线程代码,它正在访问我正在部署到这台机器上的REST 服务之一-

http://px5qa01c-8539.host.com:8080/service/TEService/v1/get/USERID=100/PURCHASED

我可以远程访问上述机器,它是一台 Linux 主机。

现在我计划在 REST 服务服务器端 上进行分析,这意味着我需要查看哪些方法占用了多少资源我的 REST 服务上的时间。

在客户端,我正在运行这样的程序 - 它将访问我在上述机器上部署的 REST 服务

java -Xrunhprof:cpu=samples,thread=y,depth=12,cutoff=0 -jar ServiceLnP.jar service_config.properties NUMBER_OF_THREADS:20 TOTAL_RUNNING_TIME:60

所以在客户端,它会生成java.hprof.txt文件,我可以用HP Jmeter打开并分析它。

问题陈述:-

但是在服务器端怎么办呢?分析已部署在其他机器上的应用程序的最佳方式是什么。

仅供引用 - 部署它的容器是 Geronimo。那么有没有什么办法,我也可以在服务器上启用 hprof,一旦我在它完成后点击我的 REST 服务,它就会生成 java.hprof.txt 我可以进一步分析吗?

最佳答案

这实际上取决于您使用的工具,它们提供了不同的解决方案。通常,他们会在服务器端 JVM 中的一个端口上监听,工具附加到该端口上。一些工具接触类以添加额外信息,一些工具可以在不修改的情况下分析应用程序。

我以前用过 JProfiler,非常好。不过,它是一种商业工具。所以这是有代价的。我也使用过 NetBean 的分析器并取得了不错的效果。这是一个免费的应用程序,因此没有任何费用。 JavaMelody 看起来和 Piotr 所建议的一样好,尽管我没有任何个人经验。

您只需要拿起一个工具并试用一下即可。

关于java - 在服务器端分析应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15624302/

相关文章:

java - Mockito 缺少any*() 静态方法 1. 如何合理替换?

python - Python 的 VisualVM 等价物

haskell - 在 Haskell 分析时排除开销

java - Netbeans JDK 校准 8.1

ssl - 在服务器端检测不受信任的 SSL 访问?

javascript - Websockets - 服务器端要求(Windows 服务器,而不是 Apache)

java - Spring Data REST - 抽象类型关联的投影

java - 如何在没有动画的情况下滚动到 ScrollView 中的某个位置?

java - Docker+Log4j最佳实践

javascript - 在 Node.js 服务器中保存和加载数据并将其传递到 html5 文件