Chẩn đoán Java theo cách của IBM,
Phần 1: Giới thiệu ng cụ chẩn đoán và
theo dõi Java của IBM - Dump Analyzer
Vưt qua nhng tp báo li dài vô tn để đi tới trng tâm ca vấn đề
Các ứng dụng Java™ ngày càng trở nên phức tạp hơn; do đó, việc chn đoán các
vấn đề bên trong các ng dụng này là một công việc không hdễ dàng và có th
cần nhiều công sức đối với một tổ chức dịch vụ bên ngoài (external service
organization). Một chỉ dẫn hữu ích và chính xác có thể góp phần tiết kiệm thời gian
và chi phí. Công cụ chẩn đoán và giámt Java của IBM® - Dump Analyzer
một công cụ thực hiện các phân tích cơ bản đối với một tệp kết xuất hệ thống được
định dạng (formatted system dump) và tạo ra mt báo cáo ngắn gọn chỉ ra những
việc mà bn cần làm tiếp theo.
Bài viết này giới thiệu Công cụ chẩn đoán và giám sát cho Java của IBM (IBM
Diagnostic and Monitoring Tools for Java) - Dump Analyzer và cung cấp một số
thông tin cơ bản về các loại vn đề màng cụ nàythể chẩn đoán. Nó giải thích
kiến trúc được sử dụng để xây dựng nên Dump Analyzer và cung cp một số suy
nghĩ về hướng đi tương lai của công c
Ngôn ng Java đã tr nên ni bt trong lĩnh vực phát trin phn mm, và do đó độ
tin cy ca các máy ảo Java (VM) đã tr thành mt vn đề rt quan trng. Máy o
thường là mt phn mm đáng tin cậy, nhưng tt nhiên, vnli xy ra trong quá
trình thc thi do mt lot các nguyên nhân khác nhau. Mt s ít nhng vấn đề y
là do li t phát sinh trong máy ảo, tuy nhiên, trong đa s trường hợp, chúng được
gây ra bi li hoc cu hình sai trong các ngăn phần mm trên máy o (trong
IBM® WebSphere® Application Server chng hn) hoc là do chính bn thân ng
dng gây ra.
Cùng vi sự trưởng thành ca ng nghệ thông tin, ngăn xếp phần mềm cho một
dự án đin hình đã tăng lên về độ phức tạp, điều này đã dn đến những khó khăn
ngày càng tăng cho các nhà phát triển đang cố gắng xác định nguyên nhân của các
vấn đề. Trong một môi trường phức tạp như vậy, để chẩn đoán lỗi, bạn có thể phải
đối mt với khối lượng thông tin nhiều đến chóng mặt. Trong môi trường sản xuất
thực tế, đó có thể là nhiu gigabyte bộ hớ, hàng trăm luồng, hàng ngàn classloader,
hàng chục ngàn lớp, và một số lượng khổng lồ các đối tượng.
Công cụ chẩn đoán và giám sát Java của IBM - Dump Analyzer (từ đây được gi
tắt là Dump Analyzer) là một framework mở rộng có khả năng tìm ra con đường
thoát khỏi mớ hỗn độn đó. Dump Analyzer có sẵn cho tất cả người dùng nội bộ của
IBM và khách hàng bên ngoài muốn sử dụng nó để điều tra các vấn đề thông qua
IBM Developer Kit cho nền tảng Java (IBM SDK). Nó sử dụng các bộ phân tích
(analyzers) để thm vấn một tệp kết xuất hệ thng đã định dạng (formatted system
dump) (mỗi bộ phân tích sẽ thăm dò tệp o lỗi bằng một câu hỏi riêng biệt) và
liên kết các kết quả với nhau bằng một đoạn mã kịch bản để tạo ra một bản báo cáo
phân tích ngắn gọn. Trong hai phiên bn đầu tiên, Dump Analyzer s cho ra một
trong bn kết quả sau:
Cái nhìn tng quan v các loi vn đề ca máy o
Có nhiu lý do khiến mt máy ảo bvn đề trong khi thực thi, mỗi loại vn đề yêu
cầu có một cách tiếp cn khác nhau để chẩn đoán. Trước khi bạn đi vào hoạt động
chi tiết của Dump Analyzer, nên kim tra những loại vấn đề khác nhau và các phân
ch cn thiết để giải quyết chúng.
Vn đề không đ b nh
Một máy ảo có thể bị lỗi vì không đ bnhớ hoặc là do vùng nhheap hoặc
vùng nhớ thực được sử dụng bởi các máy ảo để lưu ngăn xếp các lung, lớp thông
tin, mã JIT'ed, thành phn đồ họa, và các hin vật (artifacts) khác để giao tiếp cơ
bản với hệ điều hành.
Sẽ rất khó khăn để chẩn đoán một vấn đề như vậy bởi vì cấp phát bộ nhớ thất bại
không phải là nguyên nhân cui cùng; một số bộ thu gom ln đã có thể được phát
triển cho đến khi máy ảo đạt được giới hn cho phép của vùng heap. Thường thì
chúng ta sẽ cần kiểm tra lại các nội dung của vùng heap và so sánh hình nh của
vùng heap nhiều thời điểm để xác định xem các tập hợp (collections) đã tăng
ch cnhanh chóng.
Tc nghn
Một tc nghn xảy ra khi mà hai hay nhiều tiến trình phải chờ một tiến trình khác
giải phóng tài nguyên để sử dụng. Một luồng sở hữu một nguồn tài nguyên (như
màn hình) thì không thlàm chủ nguồn tài nguyên khác bởi vì luồng thứ hai s
hữu nó và đồng thời cố gắng giành quyn sở hữu tài nguyên được sở hữu bởi luồng
đầu tiên. Những lỗi này thường biểu hin qua các vấn đề về hiệu suất. Việc chẩn
đoán lỗi tương đối dễ dàng, ch cn kiểm tra trạng thái của các luồng và tài nguyên
chúng shữu.
Các vấn đề ni b
Lỗi ni bộ có thể được gây ra bởi rất nhiều vấn đề:
ngun gc có th c gắng để truy cp một đối tượng có đầu vào không
hp l (như mt tham chiếu đa phương cũ) hoặc được mã hoá không chính
xác.
B thu gom rácth thu hi không chính xác mt s vùng nh, khi tham
chiếu, nó xut hiện để cha con tr mà chưa khai báo vùng nh.
Trình biên dch JIT có th sn xut mã không chính xác hoc tham chiếu
hoc n lc để r nhánh chương trình đến mt v trí không đúng.