FBScanner
FBScanner’ın yerini HQbird aldı. HQbird’de İzleme bölümüne bakın.
FBScanner (Firebird Scanner), Firebird ile ilgili her türlü performans sorununu çözmek için kullanılan bir araçtır.
FBScanner Dokümantasyonu
FBScanner Modülleri
FBScanner, IBSurgeon araçlarının en verimlilerinden biridir: sunucu ve istemciler arasındaki SQL trafiğini izler. FBScanner özellikleri:
- LogAnalyzer - SQL sorgularının, planlarının, işlemlerinin ve bağlantılarının detaylı analizi için araç, Firebird ve InterBase’in tüm sürümlerini destekler.
- FBScanner Viewer - gerçek zamanlı görüntüleyici, FBScanner Service üzerinden geçen bağlantıları, sorguları ve işlemleri gösterir, Firebird ve InterBase’in tüm sürümlerini destekler.
- Tüm Firebird (1.0 - 2.5) ve InterBase (4.0-XE3) sürümlerinin desteği. FBScanner, Firebird 2.1’den önceki sürümlerdeki üretim Firebird ve InterBase veritabanlarında SQL sorgularını analiz eden tek araçtır, özellikle uygulama üçüncü taraflarca geliştirilmişse ve kaynak kodu mevcut değilse.
FBScanner’ın en etkileyici yeteneklerinin listesi:
- Performans darboğazlarını bulmak için detaylı analiz amacıyla tüm parametreleriyle SQL sorgularının, bağlantıların ve işlemlerin günlüğe kaydedilmesi (tek veya birkaç iş istasyonu için), Firebird (TÜM sürümler) ve InterBase (TÜM sürümler).
- Bağlantıların gerçek zamanlı izlenmesi. FBScanner Viewer, seçilen veritabanı sunucusuna yapılan tüm bağlantıları gösterir: bağlı istemcinin IP/DNS adı, veritabanı ve bağlantı süresi.
- SQL sorgularının gerçek zamanlı izlenmesi. Her bağlantı için FBScanner, şu anda çalışan tüm SQL sorgularını işlem parametreleriyle birlikte gösterir.
- En eski bağlantının ve en eski aktif işlemin tespiti, optimal olmayan işlem davranışını veya hatalı işlem tasarımını analiz etmenize veya uygulamayı performansı etkileyebilecek şekilde kullanan kullanıcıları göstermenize olanak tanır.
- İstemci bağlantı kesilmeleri (10054 hataları). Bağlantı kesilmesinin doğru şekilde gerçekleştiğini kontrol edin ve bakım veya veritabanı yükseltmeleri yapmak için kullanıcıların bağlantısını kesmek amacıyla bu yazılımı da kullanabilirsiniz.
- FBScanner, belirli uygulamaların veya belirli kullanıcıların yönlendirilmesine olanak tanır, böylece belirli uygulamalara veya kullanıcılara odaklanabilirsiniz.
FBScanner, Firebird veya InterBase performans sorununu belirlemeye ve çözmeye nasıl yardımcı olabilir? FBScanner’ın en ilginç özelliklerini hızlıca gözden geçirelim ve LogAnalyzer modülüyle başlayalım.
ADIM 1: LogAnalyzer “Sunucu Yükü”
FBScanner demo sürümünü indirin ve kurun. Başlat menüsünden “FBScanner Service Settings” öğesini çalıştırın, ardından “Advanced options” seçeneğine tıklayın, “SQL Log” sekmesini açın.
Günlük veritabanı oluşturun (bu, bu veya başka bir bilgisayardaki başka bir Firebird örneğinde olmalıdır - ayrıntılar için lütfen “FBScanner User Guide” sayfa 14-16’ya bakın). Bundan sonra, FBScanner üzerinden geçen tüm SQL trafiği günlük veritabanında saklanacaktır.
“FBScanner Log Analyzer” öğesini çalıştırın ve günlük veritabanına bağlanın. İlk sekmede, “Server load”, SQL bağlantılarının ve ifadelerinin bir özetini görebilirsiniz. Yük zirvelerini görmek ve performansın kötü olduğu anları belirlemek kolaydır.
Bu performans grafiğini yakınlaştırabilir ve kaydırabilir, sorunun başladığı anı yakalamak için parametreleri açıp kapatabilirsiniz. Bundan sonra, ayrıntılara gitmek istediğiniz noktaya sağ tıklayın ve “Go to the SQL list on HH:mm” seçeneğini seçin.
ADIM 2: LogAnalyzer’da SQL Günlüğü
“All Statements” sekmesini seçtiyseniz, tüm SQL sorgularının listesi gösterilecektir. FBScanner tarafından günlüğe kaydedilen tüm bağlantılardan SQL sorguları olduğunu lütfen unutmayın (FBScanner’ı yalnızca bir bağlantıyı veya bilgisayar grubunu veya yalnızca seçilen uygulamayı izleyecek şekilde ayarlamak mümkündür - tek ihtiyacınız uygun bağlantı dizesini ve/veya portları kullanmaktır - lütfen “FBScanner User Guide” içinde bunun hakkında okuyun).
Aramanızı daraltabilirsiniz - başlangıç ve bitiş zamanlarını ayarlayın ve ardından en uzun sorguları görmek için EXECUTION_TIME üzerinde sorgular yapın.
Her sorgu için SQL sorgu metnini, parametrelerini, başlangıç/bitiş zamanını, getirilen kayıt sayısını görebilir ve ayrıca kimin ve ne zaman çalıştırdığını öğrenebilirsiniz: IP adresi, kullanıcı adı vb.
Ayrıca FBScanner’ı SQL planlarını günlüğe kaydetmeye zorlayabilirsiniz, bunun için “FBScanner Service Settings” içinde uygun onay işaretini ayarlamanız gerekir.
Sorunlu sorguyu belirlediğinizde, bağlantısını ve işlemini görebilirsiniz: bunun için sağ tıklayın ve “View connection and transactions for statement ID=…” seçeneğini seçin. Bu sizi “All connections and Logs” sekmesine götürecektir.
ADIM 3: Bağlantılar ve İşlemler
“All connections and Logs” sekmesi, tüm bağlantıların listesini ve ana-ayrıntı ilişkisiyle işlemleri ve ifadeleri içerir.
Aşağıdaki ızgarada SQL sorgusuna tıkladığınızda, aynı işlem çerçevesindeki tüm ifadeler kalın olarak işaretlenir. Bu size gerçek işlem akışını anlamanızı sağlar. Ayrıca, işlemin parametreleri de vardır (boş işlem parametreleri, bu işlemin varsayılan “wait, write, snapshot” parametrelerine sahip olduğu anlamına gelir).
Ayrıca, FBScanner LogAnalyzer, seçilen sorguyu başka bir veritabanı sürümüne karşı çalıştırmanıza ve performansını karşılaştırmanıza olanak tanır. Ayrıca toplu SQL yürütme gerçekleştirebilir, bu Firebird sürümleri arasında geçiş durumunda yararlı olabilir.
Önemli! FBScanner’ın demo sürümü bazı sorgu metinlerini “Demo” olarak saklar ve yalnızca 7 gün çalışır. Tam sürümde bu kısıtlamalar yoktur.
ADIM 4: FBScanner Viewer
FBScanner Viewer, FBScanner’ın bağlantıların, sorguların ve işlemlerin gerçek zamanlı izlenmesinden sorumlu parçasıdır. FBScanner Viewer doğrudan FBScanner Service’e bağlanır ve SQL trafik bilgilerini alır.
FBScanner Viewer, yerel ağdaki herhangi bir makinede çalıştırılabilir: varsayılan olarak 30100 portu üzerinden bağlanır ve FBScanner Service’ten çevrimiçi verileri çeker.
Varsayılan olarak, FBScanner Viewer durumunu her 0,5 saniyede bir yeniler ve bağlantının en son 20 sorgusunu görmek de mümkündür.
Yavaş (İnternet) bağlantılar için FBScanner Viewer, örneğin her 5 saniyede bir veri yenileyecek şekilde ayarlanabilir.
Ayrıca, FBScanner Viewer bağlantı yönetimi için kullanılabilir: 10054 bağlantı kesme hatasını simüle ederek kullanıcıların bağlantısını kesebilir (seçili, tümü, maske ile) ve beyaz ve kara liste işlevselliğini destekler.
Başarılı optimizasyon için ipuçları
Önemli! Performans sorunları araştırmasına MON$Logger ile başlamanız önerilir: yoğun yük zamanında (kullanıcıların en zor yavaşlamayı yaşadığı zaman) veritabanından birkaç anlık görüntü alın ve hangi iş süreçlerinin en çok IO tükettiğini bulmaya çalışın (yüksek READ_SEQ_READS ve RECORD_IDX_READS değerlerine sahip sorgulara dikkat edin).
Ardından bu iş istasyonlarına FBScanner Service kurun (veya özel bir sunucu kullanın) ve şüpheli iş istasyonlarından gelen tüm sorguları günlüğe kaydedin: EXECUTE ve PREPARE sürelerini araştırın, SQL planlarını kontrol edin vb. Sorunu bulun ve düzeltin, ardından yeni sürümün öncekinden daha hızlı çalıştığını kontrol edin!
Sunucuda yürütülen sorguları gerçek zamanlı görüntülemek için FBScanner Viewer kullanın (bu özellik karmaşık SQL’lerin hata ayıklaması için de çok yararlıdır).
FBScanner açıklaması
FBScanner, Firebird ve InterBase yöneticileri ve geliştiricileri için güçlü bir araçtır; sunucu ve istemci uygulamaları arasındaki TCP/IP trafiğini yakalamak ve analiz etmek için tasarlanmıştır.
FBScanner, bağlantılar, sorgular (ifadeler), işlemler hakkında gerçek zamanlı olarak birçok ayrıntıyı çıkarır, tüm bu trafik nesnelerini benzersiz etiket mekanizmasıyla işaretler ve izler. FBScanner ayrıca tüm etkinliği harici Firebird veritabanına günlüğe kaydedebilir ve bir dizi benzersiz yönetim görevi gerçekleştirebilir.
FBScanner (Firebird Scanner), Firebird ve InterBase sunucuları ile istemci uygulamaları arasındaki tüm trafiği izleyebilen ve görüntüleyebilen bir araçtır.
FBScanner Service, Firebird/InterBase bulunan bilgisayarda bir kapı (proxy) olarak çalışır (yalnızca Windows) veya uzak bir bilgisayara kurulabilir ve desteklenen tüm işletim sistemlerinde (Windows, Linux, Mac OS X, HP-UX vb.) Firebird ile çalışabilir.
FBScanner, veritabanı uygulamalarını profillemek, kullanıcı etkinliğini izlemek, veritabanı bağlantılarını yönetmek (hem Classic hem de SuperServer mimarisinde istemci bağlantı kesilmesi dahil) için kullanılabilir. Ayrıca INET hatalarının (INET/inet_error: send errno = 10054) giderilmesi, mevcut uygulamaların denetlenmesi ve performans ayarlaması için idealdir.
FBScanner, Firebird (1.0, 2.0, 2.1, 2.5) ve InterBase (4.0, 5.x, 6.x, 7.0, 7.1, 7.5, 2007, 2009, XE, XE3) sürümlerini destekler.
FBScanner, veritabanı uygulaması açısından şeffaftır ve uygulama veya veritabanı kaynak kodunda, mantığında veya yapılandırmasında herhangi bir değişiklik gerektirmez.
FBScanner V3.x yalnızca Windows üzerinde çalışır ve .NET 2.0 (veya üstü) Framework kurulu olmasını gerektirir.
FBScanner Hakkında Sunumlar
FBScanner nasıl çalışır
FBScanner Service
Önemli! Bu bölümde MON$Logger ve TraceAPI Plugin’in çalışmasını açıklamıyoruz, yalnızca FBScanner Service, FBScanner Viewer ve LogAnalyzer’a ayrılmıştır.
FBScanner Service normalde Firebird veya InterBase sunucusunun çalıştığı aynı bilgisayara kurulmalıdır (bir seçenek olarak, başka bir bilgisayara kurabilir ve ardından trafiği gerçek Firebird veya InterBase sunucusuna yönlendirebilirsiniz). Kurulum sırasında FBScanner yapılandırma yardımcı programı size seçim yapmanızı soracaktır: FBScanner’ı InterBase veya Firebird’ün varsayılan portuna (3050) kurun ve Firebird hizmetinin yapılandırmasını 3052 olarak değiştirin (bu ayarlanabilir) veya FBScanner’ı başka bir TCP portunu dinleyecek şekilde kurun.
Önemli! FBScanner Service yalnızca TCP bağlantılarıyla çalışır, bu nedenle yerel (XNET) ve NetBEUI (WNET) bağlantı dizelerini kullanan istemciler FBScanner’ı atlar. Bu tür istemci uygulamalarını izlemek için MON$Logger ve TraceAPI Plugin kullanmalısınız.
İlk kurulum seçeneğini seçerseniz, tüm uygulama istekleri FBScanner Service üzerinden geçecektir.
| ##### Sunucu tarafı kurulum | ##### Uzak kurulum |
![]() |
![]() |
Performans etkisi
Performans optimizasyon sürecinin olağan senaryosu, tipik SQL trafiğini yakalamak için FBScanner’ın 1-2 tipik iş istasyonuna kurulmasını içerir. Tüm iş istasyonlarından tüm SQL trafiğini yakalamak ve günlüğe kaydetmek için bir neden yoktur - analiz edilecek çok fazla bilgi ve çok fazla tekrarlanan sorgu vardır.
Ancak, FBScanner’ı tüm sunucu için bir proxy olarak kurmak ve tüm işlemleri orada günlüğe kaydetmek istiyorsanız, üretim sunucusuyla aynı IO bant genişliğini ve karşılaştırılabilir CPU ve RAM’i sağladığınızdan emin olun. Yüksek yüklü veritabanları için FBScanner’ın günlüğü günde birkaç Gb büyüyebilir. Bu gibi durumlarda, FBScanner’ın özel (uzak sunucu) kurulumunu öneririz.
FBScanner Service, aktarılan trafikte hiçbir şeyi değiştirmez ve şeffaf bir proxy gibi çalışır; bu nedenle tüm uygulamalar normal şekilde devam eder. FBScanner Service, 50-70 aktif istemciyi izlemek için yaklaşık 125-150 Mb bellek tüketir ve kullanımdayken veritabanı performansını %5 ila %15 arasında düşürür. Bellek tüketimi, istemci uygulamasının tasarımına bağlıdır. Gerekli G/Ç bant genişliği, SQL trafiğinin yoğunluğuna bağlıdır.
Test sırasında, FBScanner’ı veritabanının 30-200 aktif bağlantıya sahip olduğu birkaç gerçek dünya ortamında ve uygulamada çalışırken kontrol ettik ve performans düşüşünün minimum düzeyde olduğunu fark ettik. Çoğu durumda, kullanıcılar izlemenin aktif olduğunu anlayamadı.
Trafiğin Segmentasyonu
FBScanner’ın standart olmayan bir bağlantı noktasında kullanılması, farklı uygulamalardan gelen farklı trafiği segmentlere ayırmasını sağlar. Örneğin, A ve B uygulamaları vardır. B, herhangi bir ayar veya izleme gerektirmeyen eski ve kararlı bir uygulamadır; A ise yeni bir uygulamadır. Yeni A uygulaması için bağlantı dizesini standart olmayan bir bağlantı noktası kullanacak şekilde (ör. server/3070:Disk:\Path\database.gdb) ayarlamak ve SQL sorgularını ve uygulama davranışını izlemek için tüm istekleri FBScanner üzerinden yönlendirmek kolaydır.

Bu yaklaşımı kullanarak, üretim ortamındaki sorunların yeni uygulamadan mı yoksa yerel ağınızın belirli bir bölümünden mi kaynaklandığını kolayca tespit edebilir ve çözebilirsiniz.





