Adem KALIN – Yazılım Mühendisi

Ömrümü Yedin SQL Server

Bugün yine bizim müdahalemiz olmadığı halde saatlerimi yiyen ve cebelleşmek zorunda kaldığım bir istisnai durum (Exception diyebiliriz) hakkında yazmak istiyorum.

Müşteri bankalarımızdan birinde gün sonu işlemlerini yapan uygulama, alınan bir hata sebebiyle durduk yere kendi kendini sonlandırmaya başlamış. Tabi bankadaki operatör amcalar feryat figan bize yapıştılar hemen. Değişiklik yapılmış herhangi bir şey yoktu bizim tarafta.. İyi de, neden durduk yerde uygulama kapanıyordu.. Uygulama kendini kapatmakla kalmıyor, beklenmedik şekilde kapandığı için de tekrar başlatmak için bi ton update yapmamız gerekiyordu. E bu işlemler bir de mesainin son yarım saatine kalınca sinir ve stres katsayısı da bir hayli artıyordu 🙂

Neyse, sorunun ne olduğunu mesaiye kalıp 1 saat daha cebelleştikten sonra tespit edebildim. Sorun, SQL Server’ın bir Exception yedikten sonra uygulamanın da bu beklenmeyen durum karşısında kendini sonlandırmasından kaynaklanıyordu. Aslında bu kısmı çok da önemli değil, hikaye..

SQL Server’dan alınan Exception ‘ın açıklaması aynen şu şekilde idi :

The query processor could not start the necessary thread resources for parallel query execution

Haydaaa.. SQL Server özet olarak diyor ki, arkadaş bana paralel paralel fazla yüklendin şimdi akşamüstü durduk yerde.. Beni yorma bak, yarıda keserim herşeyi işte böyle, al sana…

O öyle diye dursun, Google amca imdada koşar mı acaba diye kısa bir aratmadan sonra, vardığım sonuç şu ki; bu, sunucu bilgisayardaki yerel kaynaklar yetersiz kaldığından ve SQL Server yeteri kadar, her isteğe cevap verecek kadar kaynağa ulaşamadığından ortaya çıkan bir durum ve çok da belli başlı çözümü olacak bir durum değil.. Hatta bir yerde yazıyordu ki, “Çoğu zaman kendiliğinden çözülür…” Hakikaten de öyle oldu.. Mesai saati geçtikten sonra tekrar aynı işlemi denemelerini rica ettiğimde, sanki hiç SQL ile papaz olamamışız gibi, kaldığı yerden devam etti ve işlemleri sorunsuz da tamamladı.. Bana mıydı kardeşim garezin diyesim geldi ama yapacak çok da bir şey yok işte, mesaiye kaldığımız yanımıza kar oldu hiç yok yere..

Bir söz aklıma geldi : “Çalışıyosa elleme, kalsın öyle..”

Daha sonraları çok eski kodlara sahip uygulamamızın mimarisini biraz daha incelediğimde asıl sebebi de buldum 🙂 Gözden kaçan bir durum sebebiyle SQL den çekilen sorgu sonucunda SQL Server’ın o yoğun saatlerde altından kalkamayacağı kadar kayıt dönüyordu ve her geçen gün bu sorgudan alınan sonuç artıyordu. Yoğun saatler geçtiğinde ise SQL Server üzerindeki yük azalıyor, her seferinde manuel olarak başlatılan işlemlerde de her seferinde kayıtların bir kısmı parça parça işlendiğinden kayıt sayısı azalıyordu. Bu sebeplerden dolayı da işlemler tek seferde başarılı sonuçlanıyordu.

Buradan da, bütün istisnai durumların değerlendirilmesinin önemini bir kez daha anlamış oldum.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir