我正在使用Perfino来监控SLES中的一些Tomcats。服务器有自己的安装程序,因此升级它不是问题(只需运行安装程序,它将检测现有安装并进行升级)。但代理商没有安装程序。
我已经联系了EJ-Technology对此问题的支持(强调我的):
代理会自动更新。受监控的应用程序将继续使用相同的代理运行,直到重新启动。在VMs视图中,您将在VM旁边看到一个特殊图标,指示代理已过期。
如果我理解正确,运行JVM中的代理会立即升级。但我检查了agent.jar
,perfino.jar
和libperfino.so
,但都未修改,因此重启后,服务器需要再次升级。
我已经遇到了过时代理的问题,所以我已经开始构建自己的rpms来部署代理升级(即所有agent.tar.gz
)。但我现在有点担心这个方法的适当性:它依赖于类加载器,可以覆盖正在运行的应用程序的jar。我已经做到了,没有任何损失。但...
解压缩正在运行的受监控应用程序的新agent.tar.gz
是否安全?
答案 0 :(得分:1)
但我检查了agent.jar,perfino.jar和libperfino.so,但都没有被修改
服务器将新代理推送到所有受监视的JVM,但它不会覆盖您在-javaagent:[path to perfino.jar]
VM参数中指定的代理,因为这些文件可能正在使用中,甚至可能无法写入。 / p>
而是将新代理保存到~/.perfino/agent
目录。每个代理程序更新都有一个ID,这是存储代理程序的子目录的名称。文件perfino.jar
只是一个引导程序,它在启动时选择最新的可用代理程序。
解压缩正在运行的受监控应用程序的新agent.tar.gz是否安全?
不,这通常不安全,类加载时仍可能需要删除的JAR文件。