adsense

11.07.2014

Weblogic Data Source - Advanced Ayarlar





      Öncelikle Weblogic serverda database bağlantıları için Advanced ayarları nereden yapabileceğimize bir bakalım:


 

 
Console'a giriş yaptıktan sonra sırasıyla Services > Data Sources > XX DB > Connection Pool sekmesine geldikten sonra sayfa sonundaki  Advanced kısmına tıklyoruz.
  
 
 







Bu alana geldikten sonra görünen parametreleri ve ne amaçla kullanıldığını aşağıda görebilirsiniz:
Test Connections On Reserve:
Weblogic servera database bağlantısını cliente vermeden önce test etme olanağı sağlar. Bu test client tarafından yapılan bağlatı kurma isteğinde küçük bir gecikmeye sebep olsa da clienta çalışır bir bağlantı sağlamış olur.
Bu parametrenin etkin olması, failover algoritması ile çalışan multi datasourcelar için bir gerekliliktir.
Test Frequency:
Weblogic serverın kullanılmayan bağlantıları hangi sıklıkla test edeceğini saniye cinsinden ifade etmektedir.
Test esnasında hata alan connectionlar kapatılır ve tekrardan fiziksel bir bağlatı kurulması için yeniden açılır. Eğer test tekrar hata alırsa connection kapatılır.
Bu değer 0 olarak set edildiğinde periyodik test devre dışı bırakılmış olur.
Test Table Name:
Fiziksel database bağlantılarının test edilmesi esnasında kullanılacak olan tablonun ismidir. Bu parametre, bir Test Frequency değeri belirlenmesi ve Test Connections On Reserve parametresini enable duruma getirilmesi durumunda gereklidir.
Default olarak aşağıdaki şekilde gelir:
SQL SELECT 1 FROM DUAL
Seconds to Trust an Idle Pool Connection:
Weblogic serverın, connectionın hala canlı olduğunu varsaydığı ve test işlemini gerçekleştirmeden geçtiği saniye cinsinden süreyi ifade eder.
Bu seçenek özellikle yoğun bir trafik altında, test işleminin performansa etkisini minimize eden bir optimizasyon imkanı sağlar.
Shrink Frequency:
Connection talebini karşılamak amacı ile katlanarak artan bir connection poolu, shrink ( küçültmek) etmek için beklenecek olan süreyi (sn) ifade eder.
Parametre 0 olarak set edilirse shrink işlemi yapılmaz.
Connection Creation Retry Frequency:
Databasee tekrardan bağlantı kurmak için beklenen süreyi (sn) ifade eder.
Eğer bu değer set edilmezse, databasein erişilemez durumda olması halinde connection kurma işlemi başarısız olur. Ancak herhangi bir değer set edilmesi durumunda database erişlemez hale gelse bile, belirtilen süre (sn) sonra weblogic server tekrardan database ile connetion kurmaya çalışacaktır. Bu işleme başarılı bir connection kuruncaya kadar devem edilecektir.
Eğer bu değer 0 olarak set edilirse, weblogic server tekrardan connection kurmak için bir girişimde bulunmaz.
    Minimum değer: 0
    Maximum değer: 2147483647
Login Delay:
Weblogic serverın herhangi bir fiziksel connection kurmadan önce beklediği süreyi ifade eder. Bu gecikme peş peşe gelen connection isteklerini kaldıramaz duruma gelen database serverlarını korumak için kullanılabilir.
Inactive Connection Timeout:
Weblogic serverın daha önceden rezerve edilmiş inaktif  bir connectionı, connection poola geri bırakması ve tekrardan talep etmesi esnasında geçen süreyi (sn) ifade eder.
Ineactive connection timeout özelliği, leaked durumdaki connectionları veya uygulama tarafından tam olarak kapanmayan connectionları tekrardan talep etmek için kullanılır. Bu özelliğin connectionların düzgün bir şekilde kapatmak için tasarlanmadığı unutulmamalıdır.
Değer 0 olarak set edilirse bu özellik devre dışı bırakılır.
Maximum Waiting for Connection:
Weblogic serverın,  data source connection havuzundan yeni bir bağlantı kurabilmesi için engellediği eş zamanlı olarak gelebilecek maximum bağlantı isteklerin sayısını ifade eder.
    Minimum değer: 0
    Maximum değer: 2147483647

Connection Reserve Timeout:

Connection havuzundan bir bağlantı kurma isteğinin ne kadar süre (sn) sonra time out alacağını gösteren parametredir.
    Default 10 değerini alır.
         0 àHiç bir zaman time out almaz
        -1 à Hemen time out alır
         Minimum değer: 0
        Maximum değer: 2147483647
Statement Timeout:
Mevcut durumda çalışmakta olan bir sürecin ne kadar süre sonra time outa uğrayacağını gösteren ifadededir.
-1 àBu özelliği devre dışı bırakır.
            0 àHiçbir zaman time out almaz.
           Minimum değer: 0
           Maximum değer: 2147483647
Ignore In-Use Connections:
Connection havuzundan alınmış olan ve hala kullanılan connetionlar olsa bile datasourceun kapatılmasına olanak sağlayan bir özelliktir.
Pinned-To-Thread:
PinnedToThread özelliği, uygulama connectionları kapatsa bile, çalışan threadlerin bu connectionları tutmasını sağlayarak performans artışına katkı sağlar.
PinnedToThread özelliği aktif olduğunda, weblogic server connection havuzundan alınan connectionı çalışan bir threade bağlar. Uygulama ilk başta bunu connectionı rezerve etmek için kullanır. Ardından bu connectionı kullanıp işini bitirdiğinde, connection kapatma komutu gönderir. Buna rağmen weblogic server bu connectionı çalışan threadle beraber tutar ve connection havuzuna geri bırakmaz. Uygulamanın aynı thread üzerinden bir connection daha telep etmesi durumunda, weblogic server daha önceden thread üzerinde rezerve ettiği bu connectionın kullanılmasını sağlar.
PinnedToThread özelliği etkin durumda iken, çoklu threadler aynı anda connection havuzundan connection almaya çalıştığında veya threadlerin sınırlı bir connection havuzundan aynı connectionı rezerve etmeye çalıştığında herhangi bir lock oluşmaz.
Uygulamanın aynı anda, aynı threadle birden fazla connetionı rezerve etmesi durumunda, weblogic server ek database connectionları oluşturur ve bunları bu threade bağlar.
Remove Infected Connections Enabled:
Aslında bu parametreyi açıklamaya biraz fazla yer ayırmak gerekiyor. Default olarak enabled durumda olan bu parametre uygulamanızın connection isteme yöntemine göre dikkate almanız gereken bir parametredir. Dolayısıyla connection pool performans tuning yaparken yazılımcınız ile bu madde için görüşmenizde fayda var. Peki yazılımcı ile ne görüşeceğiz; yazılımcıya soracağımız soru "uygulamamız connection isterken getVendorConnection()metodu kullanıyor mu?" 
Eğer connection kullanma metodu bu ise ve bu connection pool u sadece bir uygulama kullanıyorsa bu parametreyi false set etmeniz size hatırı sayılır bir performans artışı sağlayacaktır. Çünkü ilgili bağlantı kullanıldıktan sonra DB'ye olan fiziksel bağlantı kapatılmayacak ve yeniden kullanılabilir halde hazır bekleyecektir. Aksi halde (enabled ise) kullanılan bağlantı kapatılacak ve DB'ye tekrar fiziksel bağlantı kurma isteğinde bulunulacaktır. Bu da haliyle bir gecikmeye neden olacaktır. Uygulamanız yoğun çalışan bir uygulama ise performansa kötü etki edecektir. 

1 yorum:

  1. Merhaba anlatım güzel olmuş. Türktelekom uygulması olan MTS nin connection jndi name i ile daha da akılda kalıcı oldu benim için :D

    YanıtlaSil