Error: 17886

Sorunu neredeyse on günün sonunda ilginç bir şekilde çözdük. Çözüm için izlediğimiz yol ileride performans sorunlarına yol açabilir ancak şu anda performansta bile iyileşme varmış gibi duruyor. Yaptıklarımız özetle:
  1. Data Access Layer (DAL) sınıfımızda bağlatıyı sürekli açıp kapıyorduk, bunun yerine sürekli açık bağlantı kullanmaya başladık.
  2. Her Data Access Object (DAO) örneklemi kendi DAL nesnesini oluşturduğu için bağlantı sayısı kısa zamanda artıyordu, bunun yerine statik bir bağlantı kullanmaya başladık. Hala her DAO kendi DAL örneklemini oluşturuyor ama arkadaki bağlantı nesnesi aynı.
  3. Farklı veritabanlarına erişebilmek için bir liste üzerinden doğru bağlantıyı veren bir Factory metodu yazdık.
  4. Asp.NET uygulaması olduğu için çok parçacıklı çalışmaya uygun olması için nesnenin durumunun değiştiği kodları lock() blokları içinde çalıştırdık.
  5. Sürekli açık bağlantı sebebiyle MARS ile çalıştık.

Bu önlemler sonucunda bugün yük altında dahi herhangi bir sorun gözlemlemedik. Bilakis performansta artış bile söz konusu olabilir. Bahsi geçen hata ile ilgili herhangi bir dokümana (KB) rastlamadığımız için sorunun SQL Server değil, Ado.NET bağlantı havuzu (connection pool) ile alakalı olduğunu düşünüyorum. Çözümümüzün etkilerini önümüzdeki günlerde göreceğiz.

 
Bu yazı Bilgisayarlar ve Internet içinde yayınlandı. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s