2

我正在使用 Perfino 来监控 SLES 中的一些 Tomcat。服务器有自己的安装程序,因此升级它不是问题(只需运行安装程序,它会检测现有安装并进行升级)。但是没有代理的安装程序。

我已经就这个问题联系了 EJ-Technology 的支持(强调我的):

代理会自动更新。受监控的应用程序将继续使用相同的代理运行,直到它们重新启动。在 VM 视图中,您将在 VM 旁边看到一个特殊图标,指示代理已过期。

如果我理解正确,正在运行的 JVM 中的代理会即时升级。但是我检查了agent.jarperfino.jarlibperfino.so没有修改,所以重启后服务器需要再次升级。

我已经遇到过使用过时代理的问题,因此我开始构建自己的 rpm 来部署代理升级(即所有agent.tar.gz. 但我现在有点担心这种方法的适用性:它取决于类加载器,正在运行的应用程序的 jar 可以被覆盖。我已经做到了,没有任何问题。但...

解压缩agent.tar.gz正在运行的受监控应用程序的新应用程序是否安全?

4

1 回答 1

1

但是我检查了agent.jar、perfino.jar和libperfino.so,它们都没有被修改

服务器将新代理推送到所有受监控的 JVM,但它不会覆盖您在-javaagent:[path to perfino.jar]VM 参数中指定的代理,因为这些文件可能正在使用中并且它们甚至可能不可写。

而是将新代理保存到~/.perfino/agent目录中。每个代理更新都有一个 ID,这是存储代理的子目录的名称。该文件perfino.jar只是一个引导程序,它在启动时选择最新的可用代理。

解压缩正在运行的受监控应用程序的新 agent.tar.gz 是否安全?

不,这通常是不安全的,类加载可能仍需要删除的 JAR 文件。

于 2017-03-23T09:02:18.130 回答