Ö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.
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.
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