이 페이지는 기계 번역되었습니다. 영어 원본을 읽어보세요. English

FBScanner는 HQbird로 대체되었습니다. HQbird 모니터링을 참조하세요.

FBScanner(Firebird Scanner)는 Firebird의 모든 유형의 성능 문제를 해결하기 위한 도구입니다.

FBScanner 문서

FBScanner 모듈

FBScanner는 IBSurgeon 도구 중 가장 효율적인 도구 중 하나입니다: 서버와 클라이언트 간의 SQL 트래픽을 추적합니다. FBScanner의 기능:

  1. LogAnalyzer - SQL 쿼리, 플랜, 트랜잭션 및 연결에 대한 상세 분석 도구로, 모든 버전의 Firebird 및 InterBase를 지원합니다.
  2. FBScanner Viewer - 실시간 뷰어로, FBScanner Service를 통과하는 연결, 쿼리 및 트랜잭션을 표시하며, 모든 버전의 Firebird 및 InterBase를 지원합니다.
  3. 모든 버전의 Firebird (1.0 - 2.5) 및 InterBase (4.0-XE3) 지원. FBScanner는 Firebird 2.1 이전 버전의 프로덕션 Firebird 및 InterBase 데이터베이스에서 SQL 쿼리를 분석할 수 있는 유일한 도구이며, 특히 애플리케이션이 타사에서 개발되었고 소스 코드를 사용할 수 없는 경우에 유용합니다.

FBScanner의 가장 흥미로운 기능 목록:

  • 모든 매개변수와 함께 SQL 쿼리, 연결 및 트랜잭션을 로깅하여 상세 분석(단일 또는 여러 작업장에 대해)을 수행하고, Firebird(모든 버전) 및 InterBase(모든 버전)의 성능 병목 현상을 찾습니다.
  • 연결의 실시간 모니터링. FBScanner Viewer는 선택된 데이터베이스 서버에 대한 모든 연결을 표시합니다: 연결된 클라이언트의 IP/DNS 이름, 데이터베이스 및 연결 시간.
  • SQL 쿼리의 실시간 모니터링. 각 연결에 대해 FBScanner는 현재 실행 중인 모든 SQL 쿼리와 해당 트랜잭션 매개변수를 표시합니다.
  • 가장 오래된 연결 및 가장 오래된 활성 트랜잭션 감지로, 비최적 트랜잭션 동작, 잘못된 트랜잭션 설계를 분석하거나 성능에 영향을 줄 수 있는 방식으로 애플리케이션을 사용하는 사용자를 식별할 수 있습니다.
  • 클라이언트 연결 끊김(10054 오류). 연결 끊김이 올바르게 수행되는지 확인하고, 유지 관리 또는 데이터베이스 업그레이드를 위해 사용자를 연결 해제하는 데에도 이 소프트웨어를 사용할 수 있습니다.
  • FBScanner는 특정 애플리케이션 또는 특정 사용자의 라우팅을 허용하여 특정 애플리케이션이나 사용자에 초점을 맞출 수 있습니다.

FBScanner가 Firebird 또는 InterBase 성능 문제를 식별하고 해결하는 데 어떻게 도움이 될까요? FBScanner의 가장 흥미로운 기능을 빠르게 검토하고 LogAnalyzer 모듈부터 시작하겠습니다.

1단계: LogAnalyzer “서버 부하”

FBScanner Log Analyzer

FBScanner 데모 버전을 다운로드하여 설치하세요. 시작 메뉴에서 “FBScanner Service Settings"를 실행한 다음 “고급 옵션"을 클릭하고 “SQL Log” 탭을 선택하세요.

로그 데이터베이스를 생성하세요(이 컴퓨터 또는 다른 컴퓨터의 다른 Firebird 인스턴스에 있어야 합니다 - 자세한 내용은 “FBScanner 사용자 가이드” 14-16페이지를 참조하세요). 그 후 FBScanner를 통과하는 모든 SQL 트래픽이 로그 데이터베이스에 저장됩니다.

“FBScanner Log Analyzer"를 실행하고 로그 데이터베이스에 연결하세요. 첫 번째 탭인 “서버 부하"에서 SQL 연결 및 문의 개요를 볼 수 있습니다. 부하의 피크와 성능이 나빴던 시점을 쉽게 확인할 수 있습니다.

이 성능 그래프를 확대/축소하고 스크롤할 수 있으며, 문제가 시작되는 시점을 파악하기 위해 표시할 매개변수를 켜고 끌 수 있습니다. 그런 다음 세부 정보를 확인하려는 지점을 마우스 오른쪽 버튼으로 클릭하고 “HH:mm에 SQL 목록으로 이동"을 선택하세요.

2단계: LogAnalyzer의 SQL 로그

FBScanner Log Analyzer

“모든 문” 탭을 선택하면 모든 SQL 쿼리 목록이 표시됩니다. FBScanner에 의해 로깅된 모든 연결의 SQL 쿼리가 포함되어 있음을 유의하세요(특정 연결이나 컴퓨터 그룹, 또는 선택된 애플리케이션만 모니터링하도록 FBScanner를 설정할 수 있습니다 - 적절한 연결 문자열 및/또는 포트를 사용하면 됩니다 - “FBScanner 사용자 가이드"에서 자세히 읽어보세요).

검색 범위를 좁힐 수 있습니다 - 시작 및 종료 시점을 설정한 다음 EXECUTION_TIME 기준으로 쿼리를 정렬하여 가장 오래 걸린 쿼리를 확인할 수 있습니다.

각 쿼리에 대해 SQL 쿼리 텍스트, 매개변수, 시작/종료 시간, 가져온 레코드 수를 확인할 수 있으며, 누가 언제 실행했는지도 알 수 있습니다: IP 주소, 사용자 이름 등.

또한 FBScanner가 SQL 플랜을 로깅하도록 강제할 수 있습니다. 이를 위해 “FBScanner Service Settings"에서 해당 체크 표시를 설정해야 합니다.

문제가 있는 쿼리를 식별했으면 해당 쿼리의 연결 및 트랜잭션을 확인할 수 있습니다: 마우스 오른쪽 버튼을 클릭하고 “문 ID=…에 대한 연결 및 트랜잭션 보기"를 선택하세요. 그러면 “모든 연결 및 로그” 탭으로 이동합니다.

3단계: 연결 및 트랜잭션

FBScanner Log Analyzer

“모든 연결 및 로그” 탭에는 모든 연결 목록과 마스터-디테일 관계의 트랜잭션 및 문이 포함되어 있습니다.

아래 그리드에서 SQL 쿼리를 클릭하면 동일한 트랜잭션 프레임 내의 모든 문이 굵게 표시됩니다. 이를 통해 실제 트랜잭션 흐름을 이해할 수 있습니다. 또한 트랜잭션의 매개변수도 있습니다(빈 트랜잭션 매개변수는 이 트랜잭션이 기본 “wait, write, snapshot” 매개변수를 사용함을 의미합니다).

또한 FBScanner LogAnalyzer는 선택된 쿼리를 다른 데이터베이스 버전에 대해 실행하고 성능을 비교할 수 있습니다. 또한 대량 SQL 실행을 수행할 수 있으며, 이는 Firebird 버전 간 마이그레이션 시 유용할 수 있습니다.

중요! FBScanner 데모 버전은 일부 쿼리 텍스트를 “Demo"로 저장하며 7일 동안만 작동합니다. 정식 버전에는 이러한 제한이 없습니다.

4단계: FBScanner Viewer

FBScanner Log Analyzer

FBScanner Viewer연결, 쿼리 및 트랜잭션의 실시간 추적을 담당하는 FBScanner의 일부입니다. FBScanner Viewer는 FBScanner Service에 직접 연결하여 SQL 트래픽 정보를 검색합니다.

FBScanner Viewer는 로컬 네트워크의 모든 컴퓨터에서 실행할 수 있습니다: 기본적으로 포트 30100을 통해 연결하고 FBScanner Service에서 온라인 데이터를 가져옵니다.

기본적으로 FBScanner Viewer는 0.5초마다 상태를 새로 고치며, 연결의 최근 20개 쿼리도 볼 수 있습니다.

느린(인터넷) 연결의 경우 FBScanner Viewer를 예를 들어 5초마다 데이터를 새로 고치도록 설정할 수 있습니다.

또한 FBScanner Viewer는 연결 관리에 사용할 수 있습니다: 10054 연결 끊김 오류를 시뮬레이션하여 사용자(선택, 전체, 마스크 기준)를 연결 해제할 수 있으며, 화이트리스트 및 블랙리스트 기능을 지원합니다.

성공적인 최적화를 위한 팁

중요! 성능 문제 조사는 MON$Logger로 시작하는 것이 좋습니다: 부하가 높은 시간(사용자가 가장 심한 속도 저하를 경험할 때) 동안 데이터베이스에서 여러 스냅샷을 캡처하고, 어떤 비즈니스 프로세스가 가장 많은 IO를 소비하는지 파악하세요(READ_SEQ_READS 및 RECORD_IDX_READS 값이 높은 쿼리에 주의).

그런 다음 해당 워크스테이션에 FBScanner Service를 설치하고(또는 전용 서버 사용) 의심스러운 워크스테이션의 모든 쿼리를 로깅하세요: EXECUTE 및 PREPARE 시간을 조사하고 SQL 플랜을 확인하세요. 문제를 찾아 수정한 다음 새 버전이 이전보다 빠르게 실행되는지 확인하세요!

FBScanner Viewer를 사용하여 서버에서 실행되는 쿼리를 실시간으로 확인하세요(이 기능은 복잡한 SQL 디버깅에도 매우 유용합니다).

FBScanner 설명

FBScanner는 Firebird 및 InterBase 관리자와 개발자를 위한 강력한 도구로, 서버와 클라이언트 애플리케이션 간의 TCP/IP 트래픽을 가로채고 분석하도록 설계되었습니다.

FBScanner는 연결, 쿼리(문), 트랜잭션에 대한 많은 세부 정보를 실시간으로 추출하고, 고유한 태그 메커니즘으로 이러한 모든 트래픽 객체를 표시하고 추적합니다. FBScanner는 또한 모든 활동을 외부 Firebird 데이터베이스에 로깅하고 다양한 고유한 관리 작업을 수행할 수 있습니다.

FBScanner(Firebird Scanner)는 Firebird 및 InterBase 서버와 해당 클라이언트 애플리케이션 간의 모든 트래픽을 모니터링하고 볼 수 있는 도구입니다.

FBScanner Service는 Firebird/InterBase가 설치된 컴퓨터(Windows 전용)에서 게이트(프록시) 역할을 하거나, 원격 컴퓨터에 설치되어 지원되는 모든 운영 체제(Windows, Linux, Mac OS X, HP-UX 등)에서 Firebird와 함께 작동할 수 있습니다.

FBScanner는 데이터베이스 애플리케이션 프로파일링, 사용자 활동 모니터링, 데이터베이스 연결 관리(Classic 및 SuperServer 아키텍처 모두에서 클라이언트 연결 해제 포함)에 사용할 수 있습니다. 또한 INET 오류(INET/inet_error: send errno = 10054) 문제 해결, 기존 애플리케이션 감사 및 성능 튜닝에도 이상적입니다.

FBScanner는 Firebird(1.0, 2.0, 2.1, 2.5) 및 InterBase(4.0, 5.x, 6.x, 7.0, 7.1, 7.5, 2007, 2009, XE, XE3)를 지원합니다.

FBScanner는 데이터베이스 애플리케이션 관점에서 투명하게 작동하며 애플리케이션이나 데이터베이스 소스 코드, 로직 또는 구성의 변경이 필요하지 않습니다.

FBScanner V3.x는 Windows에서만 작동하며 .NET 2.0(이상) Framework가 설치되어 있어야 합니다.

FBScanner에 관한 프레젠테이션

FBScanner: Firebird의 모든 유형의 성능 문제를 해결하기 위한 IBSurgeon의 도구. Firebird 마이그레이션: Firebird 1.5에서 Firebird 2.5로
Nataly Polyanskaya프레젠테이션 더 보기

FBScanner 작동 방식

FBScanner Service

중요! 이 섹션에서는 MON$Logger 및 TraceAPI Plugin의 작동에 대해 설명하지 않으며, FBScanner Service, FBScanner Viewer 및 LogAnalyzer에만 설명합니다.

FBScanner Service는 일반적으로 Firebird 또는 InterBase 서버가 실행 중인 동일한 컴퓨터에 설치해야 합니다(옵션으로 다른 컴퓨터에 설치한 다음 실제 Firebird 또는 InterBase 서버로 트래픽을 리디렉션할 수 있습니다). 설치 중에 FBScanner 구성 유틸리티에서 선택하라는 메시지가 표시됩니다: FBScanner를 InterBase 또는 Firebird의 기본 포트(3050)에 설치하고 Firebird 서비스 구성을 3052로 변경(조정 가능)하거나, FBScanner가 다른 TCP 포트에서 수신하도록 설치합니다.

중요! FBScanner Service는 TCP 연결에서만 작동하므로 로컬(XNET) 및 NetBEUI(WNET) 연결 문자열을 사용하는 클라이언트는 FBScanner를 우회합니다. 이러한 클라이언트 애플리케이션을 모니터링하려면 MON$Logger 및 TraceAPI Plugin을 사용해야 합니다.

첫 번째 설치 옵션을 선택하면 모든 애플리케이션 요청이 FBScanner Service를 통과합니다.

##### 서버 측 설치 ##### 원격 설치

성능 영향

성능 최적화 프로세스의 일반적인 시나리오에는 일반적인 SQL 트래픽을 포착하기 위해 1-2대의 일반 워크스테이션에 FBScanner를 설치하는 것이 포함됩니다. 모든 워크스테이션의 모든 SQL 트래픽을 가로채고 기록할 이유는 없습니다 - 분석할 정보가 너무 많고 반복되는 쿼리도 너무 많기 때문입니다.

그러나 FBScanner를 전체 서버의 프록시로 설치하고 모든 작업을 기록하려면 프로덕션 서버와 동일한 IO 대역폭과 비교 가능한 CPU 및 RAM을 제공해야 합니다. 고부하 데이터베이스의 경우 FBScanner 로그는 하루에 수 GB씩 증가할 수 있습니다. 이러한 경우 전용(원격 서버) FBScanner 설치를 권장합니다.

FBScanner Service는 전송된 트래픽에서 아무것도 변경하지 않으며 투명한 프록시처럼 작동하므로 모든 애플리케이션은 정상적으로 계속 작동합니다. FBScanner Service는 50-70명의 활성 클라이언트를 모니터링하는 데 약 125-150Mb의 메모리를 소비하며, 사용 시 데이터베이스 성능이 5~15% 감소합니다. 메모리 소비는 클라이언트 애플리케이션 설계에 따라 다릅니다. 필요한 IO 대역폭은 SQL 트래픽 강도에 따라 다릅니다.

테스트 중에 우리는 데이터베이스에 30-200개의 활성 연결이 있는 여러 실제 환경 및 애플리케이션에서 FBScanner의 작동을 확인했으며 성능 저하가 최소화되었음을 확인했습니다. 많은 경우 사용자는 모니터링이 활성화되어 있음을 알아차리지 못했습니다.

트래픽 분할

비표준 포트에서 FBScanner를 사용하면 서로 다른 애플리케이션의 다양한 트래픽을 분할할 수 있습니다. 예를 들어 애플리케이션 A와 B가 있다고 가정합니다. B는 튜닝이나 모니터링이 필요 없는 오래되고 안정적인 애플리케이션이고, A는 새로운 애플리케이션입니다. 새 애플리케이션 A의 연결 문자열을 비표준 포트(예: server/3070:Disk:\Path\database.gdb)를 사용하도록 쉽게 설정하고 SQL 쿼리와 애플리케이션 동작을 모니터링하기 위해 A 애플리케이션의 모든 요청을 FBScanner를 통해 라우팅할 수 있습니다.

이 접근 방식을 사용하면 프로덕션 환경에서 문제가 새 애플리케이션에서 발생했는지, 아니면 로컬 네트워크의 특정 세그먼트에서 발생했는지 쉽게 인식하고 해결할 수 있습니다.