2011-10-24 96 views
13

Tôi mới sử dụng Java và tôi đang gặp sự cố khi kết nối Máy chủ từ xa với số JVisualVM.Không thể kết nối máy chủ từ xa với VisualVM

Tôi đã tìm kiếm trên Internet và làm theo tất cả các bước được đề cập ở đó nhưng vẫn không thể giải quyết vấn đề. Các bước Tôi đi theo là:

  1. tôi bắt đầu jstatd trên máy chủ từ xa bằng cách trước tiên tạo một tập tin jstatd.all.policy trong $JAVA_HOME/bin. Các tập tin chứa: grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission;};

  2. tôi bắt đầu Jstatd như jstatd -J-Djava.security.policy=jstatd.all.policy

  3. tôi bắt đầu ứng dụng Java trên máy chủ từ xa như:

    java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name 
    
  4. sau đó tôi bắt đầu như là thể hiện của các JVisualVM trên của tôi máy cục bộ và khi tôi thêm máy chủ từ xa, nó đã được kết nối nhưng tôi không thể thấy bất kỳ quy trình Java nào.

Bất kỳ ai cũng có thể giúp tôi với điều này.

Cảm ơn.

+0

nó hơn đơn giản chỉ chỉnh sửa câu hỏi của bạn ... – davorp

Trả lời

5

Để kết nối với một máy ảo từ xa bạn phải bắt đầu rằng VM từ xa với các tùy chọn cụ thể:

java 
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9000 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
class 

Sau khi VM được bắt đầu, đi đến VisualVM của bạn và thực hiện như sau:

  1. Tệp -> Thêm Kết nối JMX
  2. Loại: yourHostName: 9000 và nhấp OK
  3. Ở bên trái, bạn sẽ có kết nối JMX được thêm vào, nhấp đúp vào nó và đó là nó!

tin chi tiết về các Java Giám sát và Quản lý vBulletin thể được tìm thấy here.

+0

tôi thực hiện các ứng dụng java sử dụng các bước bạn đã đề cập, nhưng nó vẫn không hiển thị bất kỳ quy trình java dưới máy chủ từ xa tôi đã thêm vào. Khi tôi cố gắng thêm kết nối jmx, nó cung cấp lỗi sau trong tệp nhật ký: ** connect (dịch vụ: jmx: rmi: /// jndi/rmi: //10.88.36.146: 9000/jmxrmi) java.net.ConnectException : Kết nối bị từ chối: ** – rushi

+0

kiểm tra tường lửa trên cả hai máy ... có thể lưu lượng truy cập qua cổng 9000 không được phép ... – davorp

+0

Tôi đã tắt tường lửa trên máy cục bộ và cài đặt bảng IP trên máy chủ từ xa là: ' Chuỗi INPUT (chính sách CHẤP NHẬN) mục tiêu prot opt ​​opt ​​nguồn đích Chain FORWARD (chính sách CHẤP NHẬN) mục tiêu prot opt ​​nguồn đích đích ĐẦU RA (chính sách CHẤP NHẬN) mục tiêu prot opt ​​nguồn đích đích ' – rushi

12

Tôi gặp sự cố tương tự khi kết nối với máy chủ ứng dụng Glassfish. Xem các giải pháp mà làm việc cho tôi vì chúng có thể tương tự cho Bạn: Thiết lập

  • Hãy thử vào ứng dụng của bạn:

    -Djava.rmi.server.hostname = * Remote_Server_External_IP_Address *

Địa chỉ IP được đề cập phải là IP bên ngoài của máy chủ (có thể âm thanh ngớ ngẩn nhưng nó hoạt động đối với tôi). Vấn đề chính trong trường hợp của tôi là JMX trỏ đến localhost và looping. Trong tệp cấu hình, địa chỉ IP chính xác phải được đặt thành máy chủ từ xa.Tôi đã mô tả nó như là 'Vấn đề 2' Trong my blog: handling connection problems

  • Nếu Firewall khối là một vấn đề sau đó tôi khuyên bạn nên thử Xming với đường hầm SSH (mà là đơn giản để thiết lập). Dưới đây là hướng dẫn, nếu bạn gặp phải sự cố khi cài đặt:
    Remote use of VisualVM with Xming (my blog) Lợi thế lớn nhất khi sử dụng XMing là nó sẽ hoạt động hầu như khi SSH được bật. Bạn chỉ cần đặt các tệp VisualVM trên máy chủ từ xa và chạy nó từ dòng lệnh. XWindow sẽ hiển thị VisualVM Window trên máy tính cục bộ của bạn.

  • Có khả năng đây là vấn đề với VisualVM - hãy thử sử dụng một số công cụ khác chỉ để xác minh điều gì là sai. Tôi khuyên bạn nên JConsole. Nó hoạt động tương tự như VisualVM và tôi cũng được mô tả chi tiết về my blog

+0

Giải pháp này làm việc cho tôi Cảm ơn bạn – Dejas

8

Bạn cần bắt đầu jstatd với các tùy chọn bổ sung mà trỏ tới IP hoặc hostname bên ngoài của máy chủ:

statd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=my_server_ip/hostname 

trả lời dựa trên: https://java.net/projects/visualvm/lists/users/archive/2010-03/message/8

+0

Cảm ơn, 'java.rmi.server.hostname' là thứ cuối cùng đã làm việc cho tôi. –

0

Dưới đây là các bước để thực hiện điều này:

  1. Launch một ejstatd trong máy chủ từ xa theo cách này (trong thư mục ejstatd): mvn exec:java -Djava.rmi.server.hostname=<remote_host_name> -Dexec.args="-pr 1099 -ph 1100 -pv 1101" (được sử dụng cho kết nối kiểu "jstatd") (chỉ định -Djava.rmi.server.hostname nếu tên máy chủ lưu trữ từ xa không khớp với tên máy bạn đang xem từ mạng cục bộ của bạn)
  2. Khởi chạy ứng dụng Java của bạn với các tham số Java bổ sung: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1102 -Dcom.sun.management.jmxremote.rmi.port=1102 -Djava.rmi.server.hostname=<remote_host_name> (được sử dụng cho kết nối kiểu "JMX") (giống như điểm trước cho -Djava.rmi.server.hostname)
  3. Mở 4 cổng đó trên máy chủ từ xa của bạn và cung cấp chúng cho máy cục bộ của bạn : 1099, 1100, 11011102
  4. Khởi chạy JVisualVM
    1. Nhấp chuột phải vào "Từ xa"> "Thêm máy chủ từ xa ..." và nhập tên máy chủ từ xa của bạn vào "Tên máy chủ" (nếu bạn không sử dụng cổng 1099, bạn có thể thay đổi điều này trong "Nâng cao Cài đặt ")
    2. Nhấp chuột phải vào máy chủ từ xa bạn vừa tạo>" Thêm kết nối JMX ... "và nhập" <remote_host_name>:1102 "vào" Kết nối "đầu vào và chọn" Không yêu cầu kết nối SSL "
    3. Quá trình Java của bạn sẽ xuất hiện hai lần: một từ kiểu kết nối "jstatd" và một từ kiểu kết nối "JMX".

Disclaimer: Tôi là tác giả của công cụ mã nguồn mở ejstatd.

0

Bắt đầu jstatd trong nohup trên máy chủ mà cần phải được theo dõi và kết nối VisualVM vào cổng jstatd, sau các bước dưới đây:

Bước 1: Tạo start-jstatd.sh và sao chép nội dung dưới đây:

nohup jstatd -p 1099 -J-Djava.security.policy=<(echo 'grant codebase "file:${java.home}/../lib/tools.jar" {permission java.security.AllPermission;};') & 

Bước 2: Cấp quyền thực thi cho tệp:

$ chmod a+rwx start-jstatd.sh 

Bước 3: Bắt đầu jstatd:

$ sh start-jstatd.sh 

Bước 4: Add Host từ xa trong VisualVM:

enter image description here

Bước 5: Thêm JMX kết nối để Máy chủ từ xa, như thể hiện trong hình dưới đây và Click vào nút OK: enter image description here

Các vấn đề liên quan