Nếu bạn đang co vấn đề về memory,cpu,thread… của ứng dụng java mà bạn đang deploy trên remote server làm thế nào để debug khi application có vấn đề.Trong bộ jdk có các công cụ sau:

1.jstatd: chủ yếu để xem thông tin static của các process nhưng lại thiếu thông tin cpu.Nhưng không cần phải start lại chương trình java để debug

Để enable ta chạy command sau:

jstatd -J-Djava.rmi.server.logCalls=true -J-Djava.rmi.server.hostname=”ip server” -J-Djava.security.policy=tools.policy -p 44444 Sau khi start ok.

Ta sử dụng tools visualvm để connect vào port 44444 để xem các process java đang chạy trên server

2.Jmx remote: thì tương tự như jstatd nhưng xem được thông tin cpu và thêm mục thread có thể xem các thread đang chạy của application đang debug và có mục sampler.Nhưng để debug phải start application lại như sau:

java -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname="x.x.x.x" -Dcom.sun.management.jmxremote.port=33333 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -cp  javaappdebug
Sau khi start jmx,ta  lại sử dụng tools visualvm để connect vào port 33333 để xem application java mà ta đã enable jmx