Ta strona została przetłumaczona maszynowo. Przeczytaj oryginał angielski. English

FBScanner został zastąpiony przez HQbird. Zobacz Monitoring w HQbird.

FBScanner (Firebird Scanner) to narzędzie do rozwiązywania wszystkich typów problemów z wydajnością Firebird.

Dokumentacja FBScanner

Moduły FBScanner

FBScanner to jedno z najbardziej efektywnych narzędzi IBSurgeon: śledzi ruch SQL między serwerem a klientami. Funkcje FBScanner:

  1. LogAnalyzer - narzędzie do szczegółowej analizy zapytań SQL, planów, transakcji i połączeń, obsługuje wszystkie wersje Firebird i InterBase.
  2. FBScanner Viewer - podgląd w czasie rzeczywistym, pokazuje połączenia, zapytania i transakcje przechodzące przez FBScanner Service, obsługuje wszystkie wersje Firebird i InterBase.
  3. Wsparcie dla wszystkich wersji Firebird (1.0 - 2.5) i InterBase (4.0-XE3). FBScanner to jedyne narzędzie do analizy zapytań SQL w produkcyjnych bazach Firebird i InterBase w wersjach przed Firebird 2.1, szczególnie gdy aplikacja została opracowana przez osoby trzecie i nie ma dostępnego kodu źródłowego.

Lista najbardziej przydatnych możliwości FBScanner:

  • Rejestrowanie zapytań SQL, połączeń i transakcji ze wszystkimi parametrami do szczegółowej analizy (dla pojedynczych lub kilku stanowisk pracy), w celu znalezienia wąskich gardeł wydajności w Firebird (WSZYSTKIE wersje) i InterBase (WSZYSTKIE wersje).
  • Monitorowanie połączeń w czasie rzeczywistym. FBScanner Viewer pokazuje wszystkie połączenia z wybranym serwerem bazy danych: adres IP/DNS podłączonego klienta, bazę danych i czas połączenia.
  • Monitorowanie zapytań SQL w czasie rzeczywistym. Dla każdego połączenia FBScanner pokazuje wszystkie aktualnie wykonywane zapytania SQL wraz z ich parametrami transakcji.
  • Wykrywanie najstarszego połączenia i najstarszej aktywnej transakcji, aby umożliwić analizę potencjalnie nieoptymalnego zachowania transakcji, nieprawidłowego projektu transakcji lub pokazanie użytkowników, którzy mogą używać aplikacji w sposób wpływający na wydajność.
  • Rozłączanie klientów (błędy 10054). Sprawdź, czy rozłączanie odbywa się prawidłowo, a także możesz użyć tego oprogramowania do rozłączania użytkowników w celu przeprowadzenia konserwacji lub aktualizacji bazy danych.
  • FBScanner umożliwia kierowanie ruchu konkretnych aplikacji lub konkretnych użytkowników, aby umożliwić skupienie się na określonych aplikacjach lub użytkownikach.

Jak FBScanner może pomóc w identyfikacji i rozwiązaniu problemów z wydajnością Firebird lub InterBase? Szybko przejrzyjmy najciekawsze funkcje FBScanner, zaczynając od modułu LogAnalyzer.

KROK 1: LogAnalyzer “Obciążenie serwera”

FBScanner Log Analyzer

Pobierz wersję demo FBScanner i zainstaluj ją. Uruchom “FBScanner Service Settings” z menu Start, następnie kliknij “Advanced options”, zakładka “SQL Log”.

Utwórz bazę dziennika (powinna znajdować się na innym wystąpieniu Firebird na tym lub innym komputerze - szczegóły znajdziesz w “FBScanner User Guide”, strony 14-16). Po tym wszystkim ruch SQL przechodzący przez FBScanner będzie zapisywany w bazie dziennika.

Uruchom “FBScanner Log Analyzer” i połącz się z bazą dziennika. Na pierwszej zakładce “Server load” (Obciążenie serwera) możesz zobaczyć przegląd połączeń SQL i instrukcji. Łatwo zauważyć szczyty obciążenia i określić momenty, w których wydajność była słaba.

Możesz powiększać i przewijać ten wykres wydajności, włączać i wyłączać parametry, aby uchwycić moment rozpoczęcia problemu. Następnie kliknij prawym przyciskiem myszy w punkcie, w którym chcesz przejść do szczegółów i wybierz “Go to the SQL list on HH:mm”.

KROK 2: Dziennik SQL w LogAnalyzer

FBScanner Log Analyzer

Jeśli wybrałeś zakładkę “All Statements” (Wszystkie instrukcje), zostanie wyświetlona lista wszystkich zapytań SQL. Zwróć uwagę, że są to zapytania SQL ze wszystkich połączeń rejestrowanych przez FBScanner (możliwe jest skonfigurowanie FBScanner do monitorowania tylko jednego połączenia lub grupy komputerów, lub tylko wybranej aplikacji - wystarczy użyć odpowiedniego ciągu połączenia i/lub portów - przeczytaj o tym w “FBScanner User Guide”).

Możesz zawęzić wyszukiwanie - ustaw momenty początkowe i końcowe, a następnie zapytania według EXECUTION_TIME, aby zobaczyć najdłuższe zapytania.

Dla każdego zapytania możesz zobaczyć tekst zapytania SQL, jego parametry, czas rozpoczęcia/zakończenia, liczbę pobranych rekordów, a także dowiedzieć się, kto i kiedy je wykonał: adres IP, nazwa użytkownika itp.

Możesz również wymusić na FBScanner rejestrowanie planów SQL - w tym celu należy ustawić odpowiedni znacznik w “FBScanner Service Settings”.

Gdy zidentyfikujesz zapytanie, które ma problemy, możesz zobaczyć jego połączenie i transakcję: w tym celu kliknij prawym przyciskiem myszy i wybierz “View connection and transactions for statement ID=…”. Przeniesie Cię to do zakładki “All connections and Logs”.

KROK 3: Połączenia i transakcje

FBScanner Log Analyzer

Zakładka “All connections and Logs” zawiera listę wszystkich połączeń oraz powiązanych transakcji i instrukcji w relacji master-detail.

Po kliknięciu na zapytanie SQL w siatce poniżej, wszystkie instrukcje w ramach tej samej transakcji zostaną oznaczone pogrubieniem. Daje to zrozumienie rzeczywistego przepływu transakcji. Dostępne są również parametry transakcji (puste parametry transakcji oznaczają, że transakcja ma domyślne parametry “wait, write, snapshot”).

Ponadto FBScanner LogAnalyzer umożliwia uruchomienie wybranego zapytania na innej wersji bazy danych i porównanie jego wydajności. Może również wykonywać zbiorcze wykonywanie SQL, co może być przydatne w przypadku migracji między wersjami Firebird.

Ważne! Wersja demo FBScanner przechowuje niektóre teksty zapytań jako “Demo” i działa tylko przez 7 dni. Pełna wersja nie ma tych ograniczeń.

KROK 4: FBScanner Viewer

FBScanner Log Analyzer

FBScanner Viewer to część FBScanner odpowiedzialna za śledzenie w czasie rzeczywistym połączeń, zapytań i transakcji. FBScanner Viewer łączy się bezpośrednio z FBScanner Service i pobiera informacje o ruchu SQL.

FBScanner Viewer może być uruchomiony na dowolnym komputerze w sieci lokalnej: domyślnie łączy się przez port 30100 i pobiera dane online z FBScanner Service.

Domyślnie FBScanner Viewer odświeża swój status co 0,5 sekundy, a także umożliwia wyświetlenie 20 najnowszych zapytań połączenia.

Dla wolnych (internetowych) połączeń FBScanner Viewer można ustawić na odświeżanie danych co 5 sekund, na przykład.

Ponadto FBScanner Viewer może być używany do zarządzania połączeniami: może rozłączać użytkowników (wybranych, wszystkich, według maski) z symulacją błędu rozłączenia 10054 oraz obsługuje funkcjonalność list białych i czarnych.

Wskazówki dotyczące skutecznej optymalizacji

Ważne! Zaleca się rozpoczęcie badania problemów z wydajnością od MON$Logger: wykonaj kilka zrzutów z bazy danych w czasie dużego obciążenia (gdy użytkownicy doświadczają największych spowolnień) i spróbuj ustalić, które procesy biznesowe zużywają najwięcej operacji wejścia/wyjścia (zwróć uwagę na zapytania z wysokimi wartościami READ_SEQ_READS i RECORD_IDX_READS).

Następnie zainstaluj FBScanner Service na tych stacjach roboczych (lub użyj dedykowanego serwera) i rejestruj wszystkie zapytania z podejrzanych stacji roboczych: zbadaj ich czasy EXECUTE i PREPARE, sprawdź plany SQL itp. Znajdź i napraw problem, a następnie sprawdź, czy nowa wersja działa szybciej niż poprzednia!

Użyj FBScanner Viewer do podglądu w czasie rzeczywistym zapytań wykonywanych na serwerze (ta funkcja jest również bardzo przydatna do debugowania złożonych zapytań SQL).

Opis FBScanner

FBScanner to potężne narzędzie dla administratorów i programistów Firebird i InterBase, zaprojektowane do przechwytywania i analizowania ruchu TCP/IP między serwerem a aplikacjami klienckimi.

FBScanner wyodrębnia w czasie rzeczywistym wiele szczegółów na temat połączeń, zapytań (instrukcji), transakcji, oznacza i śledzi wszystkie te obiekty ruchu za pomocą unikalnego mechanizmu tagów. FBScanner może również rejestrować całą aktywność w zewnętrznej bazie Firebird i wykonywać szereg unikalnych zadań administracyjnych.

FBScanner (Firebird Scanner) to narzędzie, które może monitorować i przeglądać cały ruch między serwerami Firebird i InterBase a ich aplikacjami klienckimi.

FBScanner Service działa jako brama (proxy) na komputerze z Firebird/InterBase (tylko Windows) lub może być zainstalowany na zdalnym komputerze i współpracować z Firebird na wszystkich obsługiwanych systemach operacyjnych (Windows, Linux, Mac OS X, HP-UX itp.).

FBScanner może być używany do profilowania aplikacji bazodanowych, monitorowania aktywności użytkowników, zarządzania połączeniami bazy danych (w tym rozłączania klientów zarówno w architekturze Classic, jak i SuperServer). Jest również idealny do rozwiązywania problemów z błędami INET (INET/inet_error: send errno = 10054), a także do audytu istniejących aplikacji i strojenia wydajności.

FBScanner obsługuje Firebird (1.0, 2.0, 2.1, 2.5) i InterBase (4.0, 5.x, 6.x, 7.0, 7.1, 7.5, 2007, 2009, XE, XE3).

FBScanner jest przezroczysty dla aplikacji bazodanowej i nie wymaga żadnych zmian w kodzie źródłowym aplikacji ani bazy danych, logice ani konfiguracji.

FBScanner V3.x działa tylko na Windows i wymaga zainstalowanego .NET 2.0 (lub nowszego) Framework.

Prezentacje o FBScanner

FBScanner: IBSurgeon’s tool to solve all types of performance problems with Firebird. Firebird migration: from Firebird 1.5 to Firebird 2.5
Zobacz więcej prezentacji od Nataly Polyanskaya

Jak działa FBScanner

FBScanner Service

Ważne! W tej sekcji nie opisujemy działania MON$Logger i TraceAPI Plugin, jest ona poświęcona wyłącznie FBScanner Service, FBScanner Viewer i LogAnalyzer.

FBScanner Service zwykle musi być zainstalowany na tym samym komputerze, na którym działa serwer Firebird lub InterBase (opcjonalnie można go zainstalować na innym komputerze, a następnie przekierować ruch na rzeczywisty serwer Firebird lub InterBase). Podczas instalacji narzędzie konfiguracyjne FBScanner zapyta Cię o wybór: zainstaluj FBScanner na domyślnym porcie InterBase lub Firebird (3050) i zmień konfigurację usługi Firebird na 3052 (można to dostosować), lub zainstaluj FBScanner tak, aby nasłuchiwał na innym porcie TCP.

Ważne! FBScanner Service działa tylko z połączeniami TCP, więc klienci używający lokalnych (XNET) i NetBEUI (WNET) ciągów połączeń ominą FBScanner. Aby monitorować takie aplikacje klienckie, należy użyć MON$Logger i TraceAPI Plugin.

Jeśli wybierzesz pierwszą opcję instalacji, wszystkie żądania aplikacji będą przechodzić przez FBScanner Service.

##### Instalacja po stronie serwera ##### Instalacja zdalna

Wpływ na wydajność

Typowy scenariusz procesu optymalizacji wydajności obejmuje instalację FBScanner na 1-2 typowych stacjach roboczych w celu wychwycenia typowego ruchu SQL. Nie ma powodu, aby przechwytywać i rejestrować cały ruch SQL ze wszystkich stacji roboczych - jest zbyt dużo informacji do analizy i zbyt wiele powtarzających się zapytań.

Jeśli jednak chcesz zainstalować FBScanner jako proxy dla całego serwera i rejestrować wszystkie operacje, upewnij się, że zapewnisz taką samą przepustowość wejścia/wyjścia oraz porównywalne CPU i RAM jak na serwerze produkcyjnym. W przypadku baz o wysokim obciążeniu dziennik FBScanner może wzrosnąć o kilka GB dziennie. W takich przypadkach zalecamy instalację dedykowaną (na zdalnym serwerze) FBScanner.

Usługa FBScanner nie wprowadza żadnych zmian w przekazywanym ruchu i działa po prostu jak przezroczyste proxy, więc wszystkie aplikacje będą działać normalnie. Usługa FBScanner zużywa około 125-150 MB pamięci do monitorowania 50-70 aktywnych klientów, a jej użycie zmniejszy wydajność bazy danych o 5 do 15%. Zużycie pamięci zależy od projektu aplikacji klienckiej. Wymagane pasmo wejścia/wyjścia zależy od intensywności ruchu SQL.

Podczas testów sprawdziliśmy działanie FBScanner w kilku rzeczywistych środowiskach i aplikacjach, gdzie baza danych miała 30-200 aktywnych połączeń, i zauważyliśmy, że degradacja wydajności była minimalna. W wielu przypadkach użytkownicy nie byli w stanie stwierdzić, że monitoring jest aktywny.

Segmentacja ruchu

Użycie FBScanner na niestandardowym porcie pozwala na segmentację różnych ruchów pochodzących z różnych aplikacji. Na przykład istnieją aplikacje A i B. B to stara i stabilna aplikacja, która nie wymaga żadnego dostrajania ani monitorowania, a A to nowa aplikacja. Łatwo jest skonfigurować ciąg połączenia dla nowej aplikacji A, aby używała niestandardowego portu (np. server/3070:Disk:\Path\database.gdb) i kierować wszystkie żądania z aplikacji A przez FBScanner w celu monitorowania zapytań SQL i zachowania aplikacji.

Stosując to podejście, można łatwo rozpoznać i rozwiązać problemy w środowisku produkcyjnym, niezależnie od tego, czy problem pochodzi z nowej aplikacji, czy nawet z konkretnego segmentu lokalnej sieci.