FBScanner
FBScanner được thay thế bởi HQbird. Xem Giám sát trong HQbird.
FBScanner (Firebird Scanner) là công cụ giải quyết mọi loại vấn đề hiệu suất với Firebird.
Tài liệu FBScanner
Các mô-đun của FBScanner
FBScanner là một trong những công cụ IBSurgeon hiệu quả nhất: nó theo dõi lưu lượng SQL giữa máy chủ và máy khách. Các tính năng của FBScanner:
- LogAnalyzer - công cụ phân tích chi tiết các truy vấn SQL, kế hoạch thực thi, giao dịch và kết nối, hỗ trợ tất cả các phiên bản Firebird và InterBase.
- FBScanner Viewer - trình xem thời gian thực, hiển thị các kết nối, truy vấn và giao dịch đi qua FBScanner Service, hỗ trợ tất cả các phiên bản Firebird và InterBase.
- Hỗ trợ tất cả các phiên bản Firebird (1.0 - 2.5) và InterBase (4.0-XE3). FBScanner là công cụ duy nhất phân tích các truy vấn SQL trong cơ sở dữ liệu Firebird và InterBase đang vận hành ở các phiên bản trước Firebird 2.1, đặc biệt khi ứng dụng được phát triển bởi bên thứ ba và không có mã nguồn.
Danh sách các khả năng nổi bật nhất của FBScanner:
- Ghi log các truy vấn SQL, kết nối và giao dịch với tất cả tham số để phân tích chi tiết (cho một hoặc nhiều máy trạm), nhằm tìm ra các điểm nghẽn hiệu suất ở Firebird (TẤT CẢ phiên bản) và InterBase (TẤT CẢ phiên bản).
- Giám sát kết nối thời gian thực. FBScanner Viewer hiển thị tất cả kết nối đến máy chủ cơ sở dữ liệu đã chọn: tên IP/DNS của máy khách đã kết nối, cơ sở dữ liệu và thời gian kết nối.
- Giám sát truy vấn SQL thời gian thực. Với mỗi kết nối, FBScanner hiển thị tất cả các truy vấn SQL đang chạy cùng với các tham số giao dịch của chúng.
- Phát hiện kết nối lâu nhất và giao dịch hoạt động lâu nhất để cho phép bạn phân tích hành vi giao dịch không tối ưu, thiết kế giao dịch không đúng hoặc xác định người dùng có thể đang sử dụng ứng dụng theo cách ảnh hưởng đến hiệu suất.
- Ngắt kết nối máy khách (lỗi 10054). Kiểm tra việc ngắt kết nối diễn ra đúng cách và bạn cũng có thể sử dụng phần mềm này để ngắt kết nối người dùng nhằm thực hiện bảo trì hoặc nâng cấp cơ sở dữ liệu.
- FBScanner cho phép định tuyến các ứng dụng cụ thể hoặc người dùng cụ thể để bạn có thể tập trung vào các ứng dụng hoặc người dùng cụ thể.
FBScanner có thể giúp xác định và giải quyết vấn đề hiệu suất Firebird hoặc InterBase như thế nào? Hãy cùng xem nhanh các tính năng thú vị nhất của FBScanner và bắt đầu với mô-đun LogAnalyzer.
BƯỚC 1: LogAnalyzer “Server Load”
Tải phiên bản demo của FBScanner và cài đặt. Chạy “FBScanner Service Settings” từ menu Start, sau đó nhấp vào “Advanced options”, tab “SQL Log”.
Tạo cơ sở dữ liệu log (nó nên nằm trên một phiên bản Firebird khác trên máy này hoặc máy khác - vui lòng tham khảo “FBScanner User Guide”, trang 14-16 để biết chi tiết). Sau đó, tất cả lưu lượng SQL đi qua FBScanner sẽ được lưu trữ trong cơ sở dữ liệu log.
Chạy “FBScanner Log Analyzer” và kết nối đến cơ sở dữ liệu log. Ở tab đầu tiên, “Server load”, bạn có thể xem tổng quan về các kết nối và câu lệnh SQL. Dễ dàng thấy các đỉnh tải và xác định thời điểm hiệu suất kém.
Bạn có thể phóng to và cuộn biểu đồ hiệu suất này, bật/tắt các tham số để hiển thị - nhằm bắt được thời điểm vấn đề bắt đầu. Sau đó nhấp chuột phải vào điểm bạn muốn xem chi tiết và chọn “Go to the SQL list on HH:mm”.
BƯỚC 2: SQL Log trong LogAnalyzer
Nếu bạn đã chọn tab “All Statements”, danh sách tất cả các truy vấn SQL sẽ được hiển thị. Lưu ý rằng có các truy vấn SQL từ tất cả các kết nối được FBScanner ghi log (có thể thiết lập FBScanner chỉ giám sát một kết nối hoặc một nhóm máy tính, hoặc chỉ ứng dụng đã chọn - tất cả những gì bạn cần là sử dụng chuỗi kết nối và/hoặc cổng phù hợp - vui lòng đọc về điều này trong “FBScanner User Guide”).
Bạn có thể thu hẹp tìm kiếm - đặt thời điểm bắt đầu và kết thúc rồi lọc các truy vấn theo EXECUTION_TIME để xem các truy vấn lâu nhất.
Với mỗi truy vấn, bạn có thể xem văn bản truy vấn SQL, các tham số, thời gian bắt đầu/kết thúc, số lượng bản ghi được lấy, đồng thời biết ai và khi nào thực hiện: địa chỉ IP, tên người dùng, v.v.
Bạn cũng có thể buộc FBScanner ghi log các kế hoạch SQL, để làm điều này bạn cần đánh dấu chọn phù hợp trong “FBScanner Service Settings”.
Khi bạn đã xác định được truy vấn có vấn đề, bạn có thể xem kết nối và giao dịch của nó: nhấp chuột phải và chọn “View connection and transactions for statement ID=…”. Nó sẽ đưa bạn đến tab “All connections and Logs”.
BƯỚC 3: Kết nối và Giao dịch
Tab “All connections and Logs” chứa danh sách tất cả các kết nối và các giao dịch, câu lệnh liên quan theo dạng master-detail.
Khi bạn nhấp vào truy vấn SQL trong lưới bên dưới, tất cả các câu lệnh trong cùng khung giao dịch sẽ được in đậm. Điều này giúp bạn hiểu được luồng giao dịch thực tế. Ngoài ra, có các tham số của giao dịch (tham số giao dịch trống có nghĩa là giao dịch này có tham số mặc định “wait, write, snapshot”).
Ngoài ra, FBScanner LogAnalyzer cho phép chạy truy vấn đã chọn trên một phiên bản cơ sở dữ liệu khác và so sánh hiệu suất. Nó cũng có thể thực hiện thực thi SQL hàng loạt, hữu ích trong trường hợp di chuyển giữa các phiên bản Firebird.
Quan trọng! Phiên bản demo của FBScanner lưu trữ một số văn bản truy vấn dưới dạng “Demo” và chỉ hoạt động trong 7 ngày. Phiên bản đầy đủ không có các hạn chế này.
BƯỚC 4: FBScanner Viewer
FBScanner Viewer là một phần của FBScanner chịu trách nhiệm theo dõi thời gian thực các kết nối, truy vấn và giao dịch. FBScanner Viewer kết nối trực tiếp đến FBScanner Service và truy xuất thông tin lưu lượng SQL.
FBScanner Viewer có thể chạy trên bất kỳ máy nào trong mạng nội bộ: nó kết nối qua cổng 30100 theo mặc định và kéo dữ liệu trực tuyến từ FBScanner Service.
Theo mặc định, FBScanner Viewer làm mới trạng thái mỗi 0,5 giây và cũng có thể xem 20 truy vấn mới nhất của kết nối.
Đối với kết nối chậm (Internet), FBScanner Viewer có thể được thiết lập để làm mới dữ liệu mỗi 5 giây, ví dụ.
Ngoài ra, FBScanner Viewer có thể được sử dụng để quản lý kết nối: nó có thể ngắt kết nối người dùng (đã chọn, tất cả, theo mặt nạ) với mô phỏng lỗi ngắt kết nối 10054 và hỗ trợ chức năng danh sách trắng và danh sách đen.
Mẹo để tối ưu hóa thành công
Quan trọng! Nên bắt đầu điều tra vấn đề hiệu suất với MON$Logger: chụp nhiều ảnh chụp nhanh từ cơ sở dữ liệu trong thời gian tải nặng (khi người dùng gặp tình trạng chậm khó chịu nhất) và cố gắng tìm ra quy trình kinh doanh nào tiêu thụ nhiều IO nhất (chú ý đến các truy vấn có giá trị READ_SEQ_READS và RECORD_IDX_READS cao).
Sau đó cài đặt FBScanner Service trên các máy trạm này (hoặc sử dụng máy chủ chuyên dụng) và ghi log tất cả các truy vấn từ các máy trạm đáng ngờ: điều tra thời gian EXECUTE và PREPARE của chúng, kiểm tra kế hoạch SQL, v.v. Tìm và khắc phục vấn đề, sau đó kiểm tra rằng phiên bản mới chạy nhanh hơn phiên bản trước!
Sử dụng FBScanner Viewer để xem thời gian thực các truy vấn được thực thi trên máy chủ (tính năng này cũng rất hữu ích để gỡ lỗi các SQL phức tạp).
Mô tả FBScanner
FBScanner là công cụ mạnh mẽ dành cho quản trị viên và nhà phát triển Firebird và InterBase, được thiết kế để chặn và phân tích lưu lượng TCP/IP giữa máy chủ và ứng dụng máy khách.
FBScanner trích xuất theo thời gian thực nhiều chi tiết về kết nối, truy vấn (câu lệnh), giao dịch, đánh dấu và theo dõi tất cả các đối tượng lưu lượng này bằng cơ chế thẻ duy nhất. FBScanner cũng có thể ghi log tất cả hoạt động vào cơ sở dữ liệu Firebird bên ngoài và thực hiện một số tác vụ quản trị độc đáo.
FBScanner (Firebird Scanner) là công cụ có thể giám sát và xem tất cả lưu lượng giữa máy chủ Firebird và InterBase với các ứng dụng máy khách của chúng.
FBScanner Service hoạt động như một cổng (proxy) trên máy tính có Firebird/InterBase (chỉ Windows) hoặc có thể được cài đặt trên máy tính từ xa và hoạt động với Firebird trên tất cả các hệ điều hành được hỗ trợ (Windows, Linux, Mac OS X, HP-UX, v.v.).
FBScanner có thể được sử dụng để phân tích hiệu suất ứng dụng cơ sở dữ liệu, giám sát hoạt động người dùng, quản lý kết nối cơ sở dữ liệu (bao gồm ngắt kết nối máy khách trên cả kiến trúc Classic và SuperServer). Nó cũng lý tưởng để khắc phục sự cố lỗi INET (INET/inet_error: send errno = 10054), cũng như kiểm toán các ứng dụng hiện có và tinh chỉnh hiệu suất.
FBScanner hỗ trợ Firebird (1.0, 2.0, 2.1, 2.5) và InterBase (4.0, 5.x, 6.x, 7.0, 7.1, 7.5, 2007, 2009, XE, XE3).
FBScanner trong suốt đối với ứng dụng cơ sở dữ liệu và không yêu cầu bất kỳ thay đổi nào trong mã nguồn, logic hoặc cấu hình của ứng dụng hoặc cơ sở dữ liệu.
FBScanner V3.x chỉ hoạt động trên Windows và yêu cầu cài đặt .NET 2.0 (hoặc cao hơn) Framework.
Bài thuyết trình về FBScanner
| FBScanner: công cụ của IBSurgeon để giải quyết mọi loại vấn đề hiệu suất với Firebird. | Di chuyển Firebird: từ Firebird 1.5 lên Firebird 2.5 Xem thêm bài thuyết trình từ Nataly Polyanskaya |
FBScanner hoạt động như thế nào
FBScanner Service
Quan trọng! Trong phần này chúng tôi không mô tả hoạt động của MON$Logger và TraceAPI Plugin, phần này chỉ dành riêng cho FBScanner Service, FBScanner Viewer và LogAnalyzer.
FBScanner Service thông thường phải được cài đặt trên cùng máy tính nơi máy chủ Firebird hoặc InterBase đang chạy (tùy chọn, bạn có thể cài đặt trên máy tính khác và sau đó chuyển hướng lưu lượng đến máy chủ Firebird hoặc InterBase thực tế). Trong quá trình cài đặt, tiện ích cấu hình FBScanner sẽ yêu cầu bạn chọn: cài đặt FBScanner vào cổng mặc định của InterBase hoặc Firebird (3050) và thay đổi cấu hình dịch vụ Firebird sang 3052 (có thể điều chỉnh), hoặc cài đặt FBScanner để lắng nghe trên một cổng TCP khác.
Quan trọng! FBScanner Service chỉ hoạt động với kết nối TCP, vì vậy các máy khách sử dụng chuỗi kết nối cục bộ (XNET) và NetBEUI (WNET) sẽ bỏ qua FBScanner. Để giám sát các ứng dụng máy khách như vậy, bạn nên sử dụng MON$Logger và TraceAPI Plugin.
Nếu bạn chọn tùy chọn cài đặt đầu tiên, tất cả các yêu cầu của ứng dụng sẽ đi qua FBScanner Service.
| ##### Cài đặt phía máy chủ | ##### Cài đặt từ xa |
![]() |
![]() |
Tác động đến hiệu suất
Kịch bản thông thường của quy trình tối ưu hóa hiệu suất bao gồm việc cài đặt FBScanner trên 1-2 máy trạm điển hình để bắt lưu lượng SQL điển hình. Không có lý do gì để chặn và ghi log tất cả lưu lượng SQL từ tất cả các máy trạm - có quá nhiều thông tin để phân tích và quá nhiều truy vấn lặp lại.
Tuy nhiên, nếu bạn muốn cài đặt FBScanner làm proxy cho toàn bộ máy chủ và ghi log tất cả các hoạt động ở đó, hãy đảm bảo cung cấp cùng băng thông IO và CPU, RAM tương đương với máy chủ sản xuất. Đối với cơ sở dữ liệu có tải cao, log của FBScanner có thể tăng vài Gb mỗi ngày. Trong những trường hợp như vậy, chúng tôi khuyên bạn nên cài đặt FBScanner chuyên dụng (máy chủ từ xa).
FBScanner Service không thay đổi bất cứ điều gì trong lưu lượng truyền tải và hoạt động đơn giản như một proxy trong suốt, vì vậy tất cả các ứng dụng sẽ tiếp tục hoạt động bình thường. FBScanner Service tiêu thụ khoảng 125-150 Mb bộ nhớ để giám sát 50-70 máy khách đang hoạt động, và nó sẽ làm giảm hiệu suất cơ sở dữ liệu từ 5 đến 15% khi được sử dụng. Mức tiêu thụ bộ nhớ phụ thuộc vào thiết kế của ứng dụng máy khách. Băng thông IO cần thiết phụ thuộc vào cường độ lưu lượng SQL.
Trong quá trình thử nghiệm, chúng tôi đã kiểm tra FBScanner hoạt động trong một số môi trường và ứng dụng thực tế nơi cơ sở dữ liệu có 30-200 kết nối đang hoạt động và nhận thấy rằng sự suy giảm hiệu suất là tối thiểu. Trong nhiều trường hợp, người dùng không thể nhận ra rằng việc giám sát đang được kích hoạt.
Phân đoạn Lưu lượng
Việc sử dụng FBScanner trên một cổng không chuẩn cho phép nó phân đoạn các lưu lượng khác nhau từ các ứng dụng khác nhau. Ví dụ, có các ứng dụng A và B. B là một ứng dụng cũ và ổn định không yêu cầu bất kỳ điều chỉnh hoặc giám sát nào, còn A là một ứng dụng mới. Thật dễ dàng để thiết lập chuỗi kết nối cho ứng dụng mới A để sử dụng một cổng không chuẩn (ví dụ server/3070:Disk:\Path\database.gdb) và định tuyến tất cả các yêu cầu từ ứng dụng A qua FBScanner để giám sát các truy vấn SQL và hành vi của ứng dụng.

Sử dụng cách tiếp cận này, bạn có thể dễ dàng nhận biết và giải quyết các vấn đề trong môi trường sản xuất, cho dù vấn đề đến từ ứng dụng mới, hay thậm chí nếu nó đến từ một phân đoạn cụ thể của mạng cục bộ của bạn.





