Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Chủ đề này thảo luận về các công cụ mạng, công cụ JVM và nhật ký chẩn đoán mà bạn có thể sử dụng để khắc phục các vấn đề liên quan đến mạng và máy ảo trên Apigee Edge.
Tiện ích trình theo dõi gói TCP/IP (tcpdump)
Công cụ tcpdump là công cụ theo dõi gói tin dòng lệnh cho phép bạn thu thập hoặc lọc gói TCP/IP được nhận hoặc truyền qua mạng. Có sẵn trên các hệ điều hành dựa trên Linux/Unix. Bạn có thể cài đặt tiện ích này bằng cách sử dụng yum dưới dạng sau:
yum install tcpdump
Công cụ tcpdump rất hữu ích để khắc phục sự cố về mạng hoặc các vấn đề liên quan đến SSL. Ví dụ:
- 502 Lỗi cổng vào không hợp lệ (gây ra do ngoại lệ EOF)
- 503 Lỗi không có dịch vụ
- Không thể bắt tay SSL
Để khắc phục bất kỳ sự cố nào trong số những sự cố này, trước tiên bạn phải xác định cặp thành phần giữa đã xảy ra lỗi. Trong trường hợp của Edge, đó có thể là một trong các cặp sau:
- Ứng dụng khách và Bộ định tuyến
- Bộ định tuyến và bộ xử lý thư
- Trình xử lý thư và máy chủ phụ trợ
Sau khi xác định được cặp thành phần gặp sự cố, bạn có thể chụp các gói mạng bằng cách sử dụng tcpdump trên một hoặc cả hai thành phần này.
Chụp các gói được gửi đến/nhận từ một máy chủ cụ thể bằng tcpdump
Dùng lệnh tcpdump sau để chụp lại tất cả các gói được gửi đến hoặc nhận từ máy chủ lưu trữ cụ thể (địa chỉ IP) và lưu thông tin trong tệp được chỉ định:
tcpdump -i any -s 0 host <IP address> -w <File name>
Trong trường hợp:
Thông số | Nội dung mô tả |
tôi | (giao diện) chỉ định giao diện mà từ đó gói dữ liệu sẽ được bắt. Sử dụng giá trị "any" cho phép thu thập các gói từ mọi giao diện. |
-giây | (snarf/snaplen) chỉ định số lượng gói cần thu. Sử dụng giá trị 0 (không) cho phép bạn thu thập toàn bộ gói. |
Địa chỉ IP | là địa chỉ IP của máy chủ lưu trữ mà chúng ta muốn thu thập các gói |
Tên tệp | là tên tệp mà tcpdump phải ghi vào |
Ví dụ:
Giả sử bạn muốn thu thập các gói giữa Bộ xử lý thông báo và Phần phụ trợ Máy chủ:
- Đăng nhập vào Công cụ xử lý thư.
- Xác định địa chỉ IP của Máy chủ phụ trợ (giả sử nó là 22.22.22.22) mà chúng ta muốn để bắt các gói.
Sử dụng lệnh sau để thu thập các gói mạng cho máy chủ lưu trữ có IP cụ thể địa chỉ:
tcpdump -i any -s 0 host 22.22.22.22 -w rmp-123.pcap
Nếu máy chủ phụ trợ phân giải thành nhiều địa chỉ IP, hãy sử dụng tên máy chủ của phần phụ trợ máy chủ trong lệnh tcpdump như được hiển thị dưới đây:
tcpdump -i any -s 0 host <Hostname> -w rmp-123.pcap
Nếu có nhiều máy chủ phụ trợ với các địa chỉ IP khác nhau (22.22.22.22, 33.33.33.33 và 44.44.44.44), sau đó sử dụng lệnh tcpdump bên dưới:
tcpdump -i any -s 0 host 22.22.22.22 or host 33.33.33.33 or host 44.44.44.44 -w rmp-123.pcap
Đang phân tích tcpdumps
Bạn có thể xem hoặc phân tích tcpdumps bằng cách sử dụng lệnh tcpdump hoặc công cụ dựa trên GUI Wireshark.
Tài liệu tham khảo
Tệp báo lỗi
Tệp báo lỗi là thông tin tổng quan nhanh về bộ nhớ của một quy trình Java. Chúng chứa thông tin về các đối tượng và lớp Java trong vùng nhớ khối xếp tại thời điểm tệp báo lỗi được đã thu thập. Các tệp này thường có kích thước khá lớn, dao động từ vài 100 MB đến vài GB.
Tệp báo lỗi rất hữu ích khi một quy trình Java, chẳng hạn như Trình xử lý thông báo, cho thấy:
- Mức sử dụng bộ nhớ cao
- OutofMemoryError
Tạo tệp báo lỗi cho một quy trình Java
Java cung cấp một tiện ích có tên là jmap, cho phép bạn tạo bộ nhớ số liệu thống kê hoặc tệp báo lỗi của một tiến trình Java đang chạy.
Sử dụng lệnh jmap sau đây để tạo tệp báo lỗi của một quy trình Java:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>
Trong trường hợp:
Thông số | Nội dung mô tả |
JAVA_HOME | Là thư mục cài đặt của Java |
filename | Là tên tệp sẽ được ghi vào tệp báo lỗi |
pid | Là id tiến trình của ứng dụng Java có tệp kết xuất đầu ra phải được ghi lại |
Ví dụ:
Giả sử Trình xử lý thư mp-east có mức sử dụng bộ nhớ cao hoặc đang gửi Lỗi OutOfMemory. Xác định id quá trình của Trình xử lý thông báo bằng cách sử dụng lệnh ps trên hệ điều hành Unix. Giả sử số đó là 24569.
Chạy tiện ích jmap như sau để tạo tệp báo lỗi:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=mp-east-heapdump.bin 24569
Phân tích tệp báo lỗi
Bạn có thể phân tích tệp kết xuất của vùng nhớ khối xếp bằng cách sử dụng Eclipse MAT (Công cụ phân tích bộ nhớ) để xác định tiềm ẩn các trường hợp rò rỉ bộ nhớ hoặc đối tượng Java nào đang dẫn đến mức sử dụng bộ nhớ cao.
Tài liệu tham khảo
Công cụ phân tích bộ nhớ (MAT)
Tệp kết xuất luồng
Tệp kết xuất luồng là thông tin tổng quan nhanh về trạng thái của tất cả các luồng trong một quy trình Java đang chạy. Chiến lược phát hành đĩa đơn trạng thái của mỗi luồng được hiển thị cùng với nội dung của ngăn xếp, được gọi là dấu vết ngăn xếp. Một số luồng sẽ là một phần của ứng dụng Java đang chạy, trong khi các luồng khác sẽ nằm trong Luồng nội bộ JVM.
Tệp kết xuất luồng tiết lộ thông tin về từng hoạt động luồng của ứng dụng. Thông tin này có thể rất hữu ích để:
- Chẩn đoán các sự cố như CPU tăng đột biến, thời gian phản hồi chậm hoặc Java không phản hồi ứng dụng
- Tối ưu hoá hiệu suất của ứng dụng và máy ảo JVM
Đang tạo tệp kết xuất luồng
Bạn có thể tạo tệp kết xuất luồng cho một quy trình Java bằng tiện ích jstack như dưới đây bên dưới:
sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>
Trong trường hợp:
Thông số | Nội dung mô tả |
JAVA_HOME | Là thư mục cài đặt của Java. |
pid | Là mã định danh tiến trình của ứng dụng Java có tệp kết xuất luồng mà bạn muốn ghi lại. |
filename | Là tên tệp mà tệp kết xuất luồng sẽ được ghi. |
Ví dụ:
Cách tạo tệp kết xuất luồng cho mã quy trình 37320 trên Trình xử lý thông báo mp-east, hãy sử dụng lệnh sau:
sudo -u apigee <JAVA_HOME>/bin/jstack -l 37320 > /opt/apigee/edge-message-processor/mp-east-threadDump.txt
Theo ví dụ trên, tệp kết xuất luồng của quy trình sẽ được lưu vào /opt/apigee/edge-message-processor/mp-east-threadDump.txt.
Phân tích kết xuất chuỗi
Bạn có thể xem tệp kết xuất luồng trong bất kỳ trình chỉnh sửa văn bản nào như vi (Linux), sổ tay (Windows). Tham khảo Kết xuất luồng để biết thông tin chi tiết về các phần khác nhau trong tệp kết xuất luồng và cách diễn giải của bạn.