java - 用java制作heroku分析工具

标签 java heroku jvm monitoring

我想知道如何开发适当的分析来检查 Heroku 平台上的一些内容。检查heroku的网站后,具体链接如:https://devcenter.heroku.com/articles/java-memory-issues ,我想开发自己的监视器确实很难,因为他们说不可能使用 VisualVM、jmap、jstats 等工具。由于进程隔离,这是不可能的,但这意味着什么?如果我没记错的话,每个 dyno 都有自己的 jvm,所以我们可以访问它,对吧?

如果有人能告诉我一些相关信息,我将不胜感激,因为我真的很困惑,而且周围没有太多信息。

另一方面,我一直在我的heroku应用程序中检查新的遗物插件,它工作正常,但我需要连接到heroku仪表板来检查它,所以我想避免这种操作并进行我自己的仪表板,用于了解 Heroku 内部进程之间的处理器使用百分比、内存、http 请求(即使将来可能会使用像alertra o nagios 这样的工具)(我有几个 dyno web 和 dyno 工作人员)。

我希望你能理解我的目标,我已经搜索了很多,但我很不幸。

干杯

最佳答案

无法使用诸如 visualvmjmapjstat 等工具的原因是它们需要连接到 TCP 端口在 JVM 上,但 dynos 只允许在指定的 $PORT 环境变量中指定的单个分配的 HTTP 端口上进行传入连接。

你是对的,Heroku 上的每个 Java 应用程序都有自己的 JVM,内省(introspection)它的最简单方法是添加 Java Agent到您的应用程序。这是有效的,因为它与您的应用程序一起在测功机内运行。这就是 New Relic 的代理所做的事情,信息被收集并发送给他们的服务,但如果你有兴趣制作自己的,这是完全可能的(但可能需要一些工作)。

首先,您可能需要查看 heroku-javaagent ,这是一个非常简单的 Java 代理,它定期将有关 JVM 的重要统计信息(例如线程、内存等)打印到日志流中。这对您来说可能就足够了,但是您可以随时根据您想要收集的信息进行调整。此外,您可以让它直接将信息发送到您的仪表板,或者您可以 consume the log stream 。要开始使用它,请查看 Memory logging agent Troubleshooting Memory Issues in Java Applications 部分文章。

关于java - 用java制作heroku分析工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15523558/

相关文章:

java - @com.sun.istack.internal.NotNull 注释

java - 更改 Min Sdk 版本后 "Cannot resolve symbol ' R '"?

ruby-on-rails - 如何使用rails渲染远程文件

java - 如何通过提供的地址(如 0x3790f200)使用 mat 识别指定对象

java - 我可以在方法入口处暂停 Java 运行时以便有时间通过​​调试器或分析器进行附加吗?

java - Hibernate 4/Spring 3.2 NonUniqueObjectException

java - 重复drawLine()来绘制垂直条Java

Heroku 代码=H10 desc ="App crashed"- 不知道它为什么崩溃

mysql - 重写 SQL 查询以在 heroku 上工作

java - Java 中的动态链接 : Verifier vs Resolution