使用jvisualvm的remote方式監控服務器端jvisualvm時,不是很方便,因此通過local方式,應該是正路。
一、服務器端(Linux,最小安裝模式,沒有圖形界面)
1.安裝xauth
如果在Xshell中配置了X11轉發后,出現如下提示:
WARNING! The remote SSH server rejected X11 forwarding request.
則需要查看/etc/ssh/sshd_config中以下選項是否為yes,
X11Forwarding yes
如果設置沒問題,連接時仍報上述提示,則需要安裝xauth(使用微軟Azure時,最小化安裝Linux,默認沒有xauth)
yum install xorg-x11-xauth
2.安裝xhost
如果執行xhost +命令,提示xhost命令找不到,則還需要安裝xhost,否則略過此步:
[teld@T-SHA1-FLK-01 ~]$ xhost +
-bash: xhost: command not found
查看誰提供了xhost:
[teld@T-SHA1-FLK-01 ~]$ yum provides xhost
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
xorg-x11-server-utils-7.7-20.el7.x86_64 : X.Org X11 X server utilities
Repo : base
Matched from:
Provides : xhost = 1.0.7
從列表中選擇安裝:
[teld@T-SHA1-FLK-01 ~]$ yum install xorg-x11-server-utils-7.7-20.el7.x86_64 [teld@T-SHA1-FLK-01 ~]$ xhost + access control disabled, clients can connect from any host
3.檢查$DISPLAY是否有值
[teld@T-SHA1-FLK-01 ~]$ echo $DISPLAY localhost:10.0
二、客戶端(Windows)
1.安裝Xshell
2.安裝Xmanager
Xmanager會把X DISPLAY選項自動查找為Xshell
3.配置Xshell
三、使用步驟
1.Xshell連接遠程服務器
2.在Xshell中啟動xhost +,以便在客戶端開啟xserver
[teld@T-SHA1-FLK-01 ~]$ xhost + access control disabled, clients can connect from any host
如果客戶端的xmanager沒開的話,這時會發現客戶端的xmanager會被拉起來了
3.在Xshell中啟動jvisualvm
[teld@T-SHA1-FLK-01 ~]$ jvisualvm
這時會發現jvisualvm在xmanager里出現了:
四、遇到的坑
如果執行jvisualvm時,未能彈出性能監控畫面,可以查看VisualVM的日志:
切換到指定日志下,查看日志內容,發現是:
java.lang.UnsatisfiedLinkError: /usr/java/jdk1.8.0_131/jre/lib/amd64/libawt_xawt.so:
libXtst.so.6: cannot open shared object file: No such file or directory at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824) at java.lang.Runtime.load0(Runtime.java:809) at java.lang.System.load(System.java:1086) at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1845) at java.lang.Runtime.loadLibrary0(Runtime.java:870) at java.lang.System.loadLibrary(System.java:1122) at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:77) at java.security.AccessController.doPrivileged(Native Method) at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:103) at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82) at org.netbeans.core.startup.Main.start(Main.java:214) at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:84) at java.lang.Thread.run(Thread.java:748)
根據提示,發現需要安裝libXtst
[teld@T-SHA1-FLK-02 ~]$ yum install libXtst
問題解決。
網上也有建議需要安裝三個:
#yum install libXp
#yum install libXt
#yum install libXtst
實際運行時,發現只安裝libXtst即可