Chuẩn đoán Java theo cách của IBM - Phần 1: Giới thiệu công cụ chẩn đoán và theo dõi Java của IBM-Dump Analyzer
Vượt qua những tệp báo lỗi dài vô tận để đi tới trọng tâm của vấn đề
Các ứng dụng Java™ ngày càng trở nên phức tạp hơn; do đó, việc chẩn đ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 hề dễ 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ám sát Java của IBM® - Dump Analyzer là
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 m ột báo cáo ngắn gọn chỉ ra những
việc mà bạn 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 vấn đề mà công cụ này có thể 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 cấp một số suy
nghĩ về hướng đi tương lai của công cụ
pport Assistant (gọi tắt là ISA). ISA là 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 Bạn có thể cài đặt Dump Analyzer với ISA như sau: 1. Hãy chắc chắn là ISA phiên bản 3 được cài đặt. 2. Để cài đặt Dump Analyzer, bạn nên cài đặt một sản phẩm plug-in mà nó có liên quan — ví dụ như The IBM Developer Kit cho Java. (Xem Tài nguyên để được hướng dẫn.) 3. Khởi động lại máy khách ISA. Bây giờ bạn có thể cài đặt một công cụ plug- in. 4. Đi đến dịch vụ Update. Có 2 cách để thực hiện điều này: o Bấm chọn biểu tượng Updater ở trang Welcome. o Bấm chọn liên kết Updater ở thanh menu. 5. Lựa chọn nhãn New Plug-ins và đợi cho ISA xây dựng danh mục các plug- in có sẵn để cài đặt. 6. Mở thư mục Common Component Tools. 7. Chọn IBM Diagnostic and Monitoring Tools for Java - Dump Analyzer và cài đặt. Một khi bạn đã cài đặt Dump Analyzer, bạn có thể khởi động nó từ bên trong ISA: 1. Khởi động lại ISA. 2. Chọn Tools. 3. Chọn một sản phẩm mà Dump Analyzer có sẵn — ví dụ IBM Developer Kit cho Java. 4. Bấm chọn để khởi động công cụ IBM Diagnostic and Monitoring Tools for Java - Dump Analyzer. Màn hình của bạn sẽ giống như Hình 1: Hình 1. Dump Analyzer trong ISA Đây là cách bạn có thể phân tích một một hệ thống kết xuất có định dạng: 1. Nhập tên đầy đủ của một hệ thống kết xuất có định dạng được phân tích. 2. Bấm chọn Estimate Time để nhận được một ước tính sơ bộ khoảng thời gian thực hiện phân tích. 3. Bấm chọn Analyze. Kết quả sẽ xuất hiện trong cửa sổ khi hoàn thành. Hình 2 cho thấy một ví dụ về các loại quan sát tóm tắt mà Dump Analyzer xuất ra: Hình 2. Ví dụ về quan sát tóm lược Chọn Analyze Another để trở lại màn hình giống như trong Hình 1, với tên tập tin kết xuất nhập trước đó vẫn còn nhập vào hộp văn bản đầu tiên. Selecting an analyzer module Trường được gán nhãn Optional Parameters trong màn hình dẫn ra trong Hình 1 và 2 điều khiển các bộ phân tích sẽ được thực hiện, cũng như lựa chọn thời gian chạy khác. Thông thường, bạn nên để trống trường này; điều này sẽ làm cho tập lệnh phân tích mặc định, general.sml, được thực thi. Tập lệnh này sẽ kiểm tra các dạng phổ biến nhất của các vấn đề. Tuy nhiên, nếu bạn thực sự biết loại cụ thể của vấn đề mà bạn đang điều tra hoặc nếu bạn cần phải làm việc trên một vấn đề mà không được tích hợp vào các tập lệnh mặc định, bạn rõ ràng có thể chỉ định một hoặc nhiều bộ phân tích được gọi. Những bộ phân tích có thể được gọi với tên của tập tin kịch bản cụ thể hoặc tên lớp của module phân tích cụ thể. Gõ -help trong trường Optional Parameters sẽ liệt kê nhiều tùy chọn thời gian chạy hơn nữa. Trong phiên bản đầu tiên của công cụ, chỉ có một số rất nhỏ các phân tích thí nghiệm đã được cung cấp ngoài kịch bản mặc định. Chúng bao gồm: DefaultDumpReport (Tên lớp: com.ibm.dtfj.analyzer.deal.basic.DefaultDumpReport): Phân tích này tạo ra một báo cáo khá chi tiết về tất cả các khía cạnh chính của tình trạng máy ảo, tương tự như những gì có thể được tìm thấy trong một tập tin Javacore (nhưng thêm một số thông tin DTFJ đặt trưng). ListZipJars (Tên lớp: com.ibm.dtfj.analyzer.deal.extended.ListZipJars): Phân tích thử nghiệm này cố gắng khám phá tất cả các tập tin zip và JAR đang mở trong máy ảo này, có thể cung cấp cái nhìn sâu sắc vào bất kỳ thư viện tùy chỉnh được sử dụng bởi các ứng dụng hoặc bên trung gian. SystemProperties (Tên lớp: com.ibm.dtfj.analyzer.deal.extended.SystemProperties): Phân tích thử nghiệm này quét máy ảo và in ra giá trị hiện tại của tất cả các tài sản hệ thống Java được định nghĩa trong máy ảo đó. WASBasicInfo (Tên lớp: com.ibm.dtfj.analyzer.deal.was.WASBasicInfo): Đây là một phiên bản rất sơ bộ và thực nghiệm của một phân tích thể hiện rõ việc sử dụng công cụ này để kiểm tra trạng thái của một WebSphere Application Server thời gian chạy thực hiện bên trong máy ảo. Những bộ phân tích khác hiện đang được cung cấp chủ yếu là để minh họa cho tính linh hoạt của công cụ. Phiên bản sắp tới sẽ có nhiều bộ phân tích chuyên ngành bổ sung cùng với tài liệu hướng dẫn. Ngoài ra, trong bài viết thứ tư trong loạt bài này, bạn sẽ học cách để viết bộ phân tích của riêng bạn để bổ sung những vận chuyển với các công cụ chính nó. Sử dụng Dump Analyzer từ dòng lệnh Trong một số trường hợp, việc chạy Dump Analyzer từ dòng lệnh là khá hữu ích (ví dụ như khi quá trình phân tích cần phải được tích hợp vào một số công việc xử lý vấn đề hiện tại). Cách dễ nhất để sử dụng Dump Analyzer là thông qua ISA, và các bạn vừa được thấy cách làm thế nào để tải về các Dump Analyzer trong ISA. Để chạy một mình Dump Analyzer, bạn cần bốn tập tin JAR và một tập tin script. Đó là: dumpAnalyzer.jar (nằm trong installDir/plugins/com.ibm.java.diagnostics.dbda.isa_(số phiên bản)/WEB- INF/lib) dtfj-interface.jar (nằm trong installDir/plugins/com.ibm.java.diagnostics.dbda.isa_(số phiên bản)/WEB- INF/lib/j9) dtfj.jar for Java 5.0 and above (nằm trong installDir/plugins/com.ibm.java.diagnostics.dbda.isa_(số phiên bản)/WEB- INF/lib/j9) dtfj.jar for Java 1.4.2 (nằm trong installDir/plugins/com.ibm.java.diagnostics.dbda.isa_(số phiên bản)/WEB- INF/lib/sov) general.sml (nằm trong installDir/plugins/com.ibm.java.diagnostics.dbda.isa_(số phiên bản) Trong tất cả các đường dẫn ở trên, installDir biểu thị thư mục cài đặt ISA, theo mặc định là C:\Program Files\IBM\IBM Support Assistant v3 trên Microsoft Windows hay /opt/IBM/IBM Support Assistant v3 trên Linux™. Bạn có thể sao chép những tập tin này ở nơi khác, hoặc bạn có thể chạy Dump Analyzer trực tiếp từ thư mục InstallDir/plugins/com.ibm.java.diagnostics.dbda.isa_ (số phiên bản). Mặc dù ISA chỉ có sẵn trên Windows và Linux, bạn có thể chạy Dump Analyzer từ dòng lệnh trên bất kỳ nền tảng nào. Đây là các bước dòng lệnh để chạy Dump Analyzer từ thư mục mặc định trên Windows: 1. set CP=WEB-INF/lib/dumpAnalyzer.jar 2. set BCP=WEB-INF/lib/j9/dtfj.jar;WEB-INF/lib/j9/dtfj-interface.jar;WEB- INF/lib/sov/dtfj.jar 3. java -cp %CP% -Xbootclasspath/p:%BCP% com.ibm.dtfj.analyzer.base.DumpAnalyzer (dumpName) (options) Và đây là các bước cho Linux: 1. export CP=WEB-INF/lib/dumpAnalyzer.jar 2. export BCP=WEB-INF/lib/j9/dtfj.jar:WEB-INF/lib/j9/dtfj- interface.jar:WEB-INF/lib/sov/dtfj.jar 3. java -cp $CP -Xbootclasspath/p:$BCP com.ibm.dtfj.analyzer.base.DumpAnalyzer (dumpName) (options) Tại đây, dumpName là tên kết xuất hoàn toàn đủ điều kiện để được phân tích. options là các thông số Runtime có thể được sử dụng để cấu hình Dump Analyzer. Chạy với tùy chọn -help sẽ in ra một danh sách của tất cả các thông số có sẵn. Hình 3 cho thấy một bản chụp của một số kết quả đầu ra từ Dump Analyzer khi chạy trên dòng lệnh: Hình 3. Ví dụ về đầu ra dòng lệnh của Dump Analyzer Kế hoạch tương lai Tại thời điểm viết bài, một phiên bản đầu tiên của Dump Analyzer đã được ra mắt. Nhóm chúng tôi dự định sẽ tiếp tục thực hiện cải tiến và cập nhật một cách thường xuyên. Đặc biệt, chúng tôi sẽ tập trung vào hai lĩnh vực: DTFJ: Kiến trúc bên trong Dump Analyzer Dump Analyzer sử dụng DTFJ để thẩm tra các định dạng lỗi của hệ thống. DTFJ là một API hỗ trợ xây dựng các công cụ chẩn đoán của Java, có thể kiểm tra các sự cố hệ thống từ một máy ảo. Trước khi các sự cố hệ thống có thể được kiểm ra, đầu tiên phải được xử lý bởi jextract để thêm thông tin cụ thể của Java runtime. Điều này là cần thiết để jextract chạy với các tệp kết xuất hệ thống (jextract core.dmp, trên dòng lệnh) sử dụng cùng phiên bản với nền tảng Java và chạy trên cùng máy mà phát sinh ra lỗi hệ thống. Một khi điều này được thực hiện, các tập tin kết quả (.sdff cho V1.4 của nền tảng Java, hay .dmp.zip cho V5.0 và cao hơn) có thể được kiểm tra trên bất kỳ hệ thống nào. Giai đoạn đầu tiên trong phân tích sử dụng DYHJ là xây dựng một tệp ảnh DTFJ sử dụng một tệp ảnh đã được nhà sản xuất tích hợp. Nhà sản xuất này cung cấp một mức độ máy ảo cụ thể và có sự hiểu biết về nền tảng cụ thể của định dạng lỗi hệ thống. Tệp ảnh này thể hiện toàn bộ hình ảnh hệ điều hành; nó cung cấp các phương pháp để truy cập thông tin về kiến trúc của máy phát sinh các sự cố hệ thống, nhưng tính năng chính của nó là khả năng cho phép kiểm tra các địa chỉ không gian nó chứa bên trong tệp ảnh. Sử dụng DTFJ API, nó có thể chuyển từ tệp ảnh đến từng chi tiết các thông số của thời gian chạy, các luồng Java, môi trường, và đối tượng trong vùng heap. Giao diện cho phép sử dụng công cụ để phân tích vấn đề và cung cấp thông tin báo cáo. Chúng tôi sẽ tiếp tục cải tiến giao diện người dùng của công cụ, thêm các trình điều khiển để kiểm tra các sự cố và phân tích khi chạy, nâng cao định dạng đầu ra, có thể bổ sung thêm chế độ tương tác, và nhiều hơn nữa. Chúng tôi sẽ tăng số lượng các phân tích và các kịch bản để bao quát đa dạng hơn nữa các vấn đề. Lĩnh vực xây dựng phân tích mới là điều đặc biệt thú vị. Với công nghệ phân tích bắt lỗi DTFJ, bây giờ bạn có một cơ chế khá dễ tiếp cận để kiểm tra các đơn vị VM ở mức độ thấp như các luồng và màn hình để chẩn đoán để chẩn đoán lỗi thiếu bộ nhớ, treo máy, các tắc nghẽn, và tương tự như thế; ngoài ra, bạn cũng có thể kiểm tra các nội dung của bất kỳ cấu trúc dữ liệu nào hiện có trong các máy ảo. Đặc biệt, bạn có thể kiểm tra các nội dung của cấu trúc dữ liệu khác nhau mà là một phần của việc thực hiện của ứng dụng hoặc trung gian chạy bên trong máy ảo. Chúng tôi dự định bắt đầu xây dựng một bộ phân tích sử dụng thông tin này để giúp chẩn đoán một loạt các vấn đề trong WebSphere Application Server và các sản phẩm ngăn xếp có khả năng khác. Mục đích của chúng tôi là làm cho công cụ hữu ích nhất có thể, vì vậy chúng tôi rất hoan nghênh mọi thông tin phản hồi — cả về chính công cụ và về các bộ phân tích mới mà bạn muốn thêm vào —. Thông tin phản hồi có thể được cung cấp thông qua bài viết này hoặc thông qua ISA.
File đính kèm:
- Chuẩn đoán Java theo cách của IBM - Phần 1_Giới thiệu công cụ chẩn đoán và theo dõi Java của IBM-Dump Analyzer.pdf