2013-02-20
Tags: ssh , windows7 , remote-control , linux , java
一般拿來當production系統的linux server多數只會提供文字模式介面,server不會沒事裝個
x-window增加它的負擔。在這個前提下,想在server上面執行jconsole、jvisualvm這類有gui畫面的jvm監控程式,基本上是辦不到的,一執行就會馬上噴error然後就掛掉啦。
要怎麼解決這問題,O社官方的解法是用jmx remote這技術解決。這是指你在server端啟用這功能,client端就能遠端連進去看jvm的狀況。不過...相信我,這東西的難用,決對會讓你比中指。光是設定部份我想大概就嚇跑一堆人了,這種鳥蛋solution當然不會是我的選擇。
那...在文字介面下,就只能用jps、jmap這類指令去把jvm的資訊取出來,沒有比較簡單的監控方式嗎?答案是有的,不過也是有點小麻煩就是了。但是相對於jmx remote的方式,卻又簡單太多,而且這招式可不是只有java可用,而是linux上要跑gui介面的程式都可以用這招!
實作的方式,可以參考
這篇文章,裡面把整個前因後果跟重點都提到了。不過...也因為只提重點,所以沒有相關基礎的人會卡關卡老半天。我在這上面就卡了半天多才整個弄出來...Orz
以下是依據這篇文章的實作明細,有需要的人可以參考看看。
===========================================================================
<系統環境簡述>
1.server端:建置在VM上的ubuntu 12.04 64bit。ip是192.168.1.40
2.client端:windows 7 64bit
===========================================================================
<實作流程>
1. server端安裝vnc server與ssh server。ssh部份可參考
這篇,vnc部份參考下行指令進行安裝
sudo apt-get install tightvncserver2.client端用putty設定ssh連線,並將tunnel的port設定成5901
ssh user@192.168.1.40 -L5901:localhost:59013.client端用putty連上server,接著在putty console裡面執行下列指令
Xvnc :1 -geometry 1024x768 &執行後的畫面類似下面這樣。這功能代表你讓linux上的X server具有了vnc server功能
cloudtu@cloudtu-VirtualBox:~$ Xvnc :1 -geometry 1024x768 &在putty console接著執行下行指令。這代表要把server端所有具有gui畫面程式的畫面輸出都導到vnc client。
[1] 2690
cloudtu@cloudtu-VirtualBox:~$ 20/02/13 10:34:04 Xvnc version TightVNC-1.3.9
20/02/13 10:34:04 Copyright (C) 2000-2007 TightVNC Group
20/02/13 10:34:04 Copyright (C) 1999 AT&T Laboratories Cambridge
20/02/13 10:34:04 All Rights Reserved.
20/02/13 10:34:04 See http://www.tightvnc.com/ for information on TightVNC
20/02/13 10:34:04 Desktop name 'x11' (cloudtu-VirtualBox:1)
20/02/13 10:34:04 Protocol versions supported: 3.3, 3.7, 3.8, 3.7t, 3.8t
20/02/13 10:34:04 Listening for VNC connections on TCP port 5901
Font directory '/usr/share/fonts/X11/Speedo/' not found - ignoring
Font directory '/usr/share/fonts/X11/75dpi/' not found - ignoring
Font directory '/usr/share/fonts/X11/100dpi/' not found - ignoring
export DISPLAY=:1在putty console接著執行jconsole指令,此時會把jconsole的gui畫面導到vnc client。
jconsole &4.client端執行vnc client,連到127.0.0.1:5901。這時就會看到server上面執行的jconsle,而且可以進行jvm的監控與分析
Xvnc [:display] [-geometry widthxheight]2.Xvnc裡的「:display」參數(在我的實做中是用「:1」)對應到vnc的port number是 590X,X就是你指定的「:display」數值。
[:display] -> The display number to use.
[-geometry widthxheight] -> Set desktop width and height.