2011-08-05 15 views
6

Tôi đã kiểm tra kỹ những điều sau:Làm thế nào tôi có thể theo dõi Tomcat với jvisualvm, hiển thị visualgc?

  • Tôi đang chạy jvisualvm trên cùng một hộp nơi Tomcat đang chạy.
  • Đây là Java 6u19.
  • Dịch vụ Tomcat của tôi đang chạy với tư cách người dùng giống như tôi đã đăng nhập.
  • Dịch vụ Tomcat của tôi đang sử dụng đúng thư mục JVM mà tôi đang sử dụng jvisualvm.
  • Tomcat đã bật JMX trên một cổng cụ thể, nhưng tôi không nghĩ rằng điều này sẽ giúp tôi.

Với tất cả điều này, tôi làm xem quy trình Tomcat của tôi trong danh sách "Địa phương" cho jvisualvm. Nó được hiển thị là "< Ứng dụng không xác định> (pid 5644)". Nếu tôi nhấp đúp vào nó, thì mỗi tab sẽ hiển thị "Không được hỗ trợ cho JVM này". Tuy nhiên, VisualVM được hiển thị trong "Local" và tất cả các tab làm việc cho nó, rõ ràng là sử dụng cùng một cá thể JVM. Không có cách nào rõ ràng để thêm kết nối JMX vào ví dụ "< Unknown Application>".

Tôi thấy trường hợp JMX của Tomcat trong "Local" là "localhost: (số cổng của tôi)", và điều này hoạt động, nhưng tab Visual GC hiển thị "Không được hỗ trợ cho JVM này", mà tôi giả định có nghĩa là Visual GC không hoạt động thông qua JMX.

Tôi đang làm gì sai? Tôi đã thử bắt đầu jstatd. Nó không có sự khác biệt. Khi tôi bắt đầu jstatd, sau đó visualvm thấy một "địa phương" "jstatd" nhưng khi tôi nhấp đúp vào nó, nó chỉ có vẻ như theo dõi quá trình jstatd và không phải bất kỳ quá trình Java khác.

LƯU Ý: Tôi đã quyết định thử chạy Tomcat không phải là dịch vụ nhưng trực tiếp trong cửa sổ CMD và viola, giờ đây visualvm hoạt động hoàn hảo. Tôi nghĩ rằng tôi sẽ thử điều này khi tôi chạy "jps" và nhận được khiếu nại "quá trình thông tin không có sẵn" và Googled cho điều đó và tìm thấy một người nói rằng họ đã nhận này khi họ chạy bất kỳ ứng dụng Java như một dịch vụ. Điều này giúp trong một testbed, nhưng không giúp tìm ra cách để theo dõi một hệ thống sản xuất.

này được Tomcat chạy như một dịch vụ Windows dưới wrapper Tanuki trên Windows Server 2003.

Trả lời

3

Rõ ràng từ mô tả của bạn mà Jvmstat được bằng cách nào đó bị hỏng. Jvmstat được sử dụng bởi Visual GC, jps và VisualVM. Lý do bạn thấy Tomcat của bạn là ứng dụng không được nhận dạng dưới nút "Local", có nghĩa là VisualVM đã phát hiện (thông qua jvmstat) rằng đang chạy ứng dụng Java, nhưng nó không thể nhận được bất kỳ dữ liệu nào về nó. Điều này có thể bằng cách nào đó kết nối với thực tế là bạn đang chạy Tomcat của bạn như là dịch vụ Windows. Bạn có thể thử thoát khỏi tất cả các ứng dụng java và xóa thư mục hsperfdata_ {your_user_name}, nằm trong thư mục% TMP% và khởi động lại Tomcat và VisualVM. Nếu Tomcat được nhận diện chính xác dưới nút "cục bộ", Visual GC cũng sẽ hoạt động. Nếu không thành công, hãy khởi động Tomcat và chạy jps với:

jps -J-Djps.debug=true -J-Djps.printStackTrace=true 

và đăng đầu ra. Điều này có thể cho chúng ta thấy, tại sao jvmstat không thể đọc thông tin từ Tomcat.