Ben*_*ron 17 java linux freebsd
可能重复:
VisualVM over ssh
我正在写这个问题并回答它,因为我今天花了几个小时才开始工作,我在这里找不到任何答案.希望这对其他人有帮助.如果你有另一个解决方案,而不是我最终使用的解决方案,请随时回答这个问题.如果你的更好,我会接受你的.
问题:我正在尝试使用VisualVM和jstatd监视我的FreeBSD服务器上的一些自制java应用程序(这也应该适用于Linux服务器),但我无法让VisualVM列出服务器上的进程,即使我转发我的防火墙中分配的和随机的jstatd端口,可以看到使用sockstat建立的连接.
Ben*_*ron 35
我没有在每次运行jstatd时创建防火墙规则(因为它每次都烦人地选择一个新的随机端口),而是让它与SSH隧道一起工作.
首先,我在服务器上运行jstatd以找到我需要隧道的端口.这是通过(在我的情况下)首先创建一个名为tools.policy的策略文件来完成的,其中包含以下内容:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
Run Code Online (Sandbox Code Playgroud)
然后运行以下命令: jstatd -J-Djava.security.policy=tools.policy
然后我确定jstatd随机端口正在运行sockstat | grep jstat(可能需要netstat在Linux 上使用,我不确定).
然后让我们说随机端口是55663,我在我的本地机器上创建了两个SSH隧道,一个用于标准的jstatd端口1099,另一个用于55663,在两个终端窗口中运行以下命令(在Windows上没有这样做,但是我很确定putty可以做到这一点):
ssh -L 1099:localhost:1099 login_name@host_name
ssh -L 55663:localhost:55663 login_name@host_name
两个隧道打开后,我打开VisualVM并右键单击左侧的"Local"机器并选择"Add jstatd Connection".我单击右侧的"添加默认值"按钮,确保端口设置为1099.我点击"确定"按钮保存它,并立即看到我的远程Java进程显示在"本地"部分.
| 归档时间: |
|
| 查看次数: |
35330 次 |
| 最近记录: |