Arama butonu
Bu konudaki kullanıcılar: 1 misafir
17
Cevap
5891
Tıklama
0
Öne Çıkarma
MSSQL ve c#
H
11 yıl
Yüzbaşı
Konu Sahibi

Merhaba arkadaşlar,
Multithread çalışan bir yazılım var. Sürekli (yaklaşık yarım dakika aralıklarla) veritabanı işlemleri yapıyorum(okuma yazma güncelleme vs..) Ortalama 400 adet thread ile çalışan bu yazılım birkaç gün sonra çöküyor. Sorgu sürelerini log'a yazdırıyorum. Ortalama 100ms sürüyo bir tanesinin sorgusu. Daha sonra ne oluyo bilmiyorum birden sorgular zaman aşımına uğramaya başlıyor. Aynı software üzerindeki tüm thread'lerin sorguları zaman aşımına uğrayınca tabi çöküyor.

Her bir sorgudan önce sql connection'ı açıp kapanıyorum. Timeout 3 dakika.

Sebebi ne olabilir acaba? Kodu gözden geçirdim kapatmadığım connection yok.

Hata :
System.Data.SqlClient.SqlException (0x80131904): Timeout süresi doldu. İşlem tamamlanmadan zaman aşımı süresi doldu veya sunucu yanıt vermiyor. 
The statement has been terminated. ---> System.ComponentModel.Win32Exception (0x80004005): Bekleme işlem zamanı aşıldı
konum: System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
konum: System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
konum: System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
konum: System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
konum: System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds)
konum: System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite)
konum: System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)
konum: System.Data.SqlClient.SqlCommand.ExecuteNonQuery()

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



C
11 yıl
Yüzbaşı

wqlky ye katılıyorum dead-lock oluşuyor olabilir şu makaleyi inceleyebilirsiniz
http://melikememis.wordpress.com/2012/05/14/lock-dead-lock/


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @hasan1980125
H
11 yıl
Yüzbaşı
Konu Sahibi

Hocam max degree of parallelism'i 4'e getirdim. şuradan bakarak
Ama sorgulara ne ekleyeceğim anlamadım. Bu kendisi otomatik yapmıyordur heralde.
Client sayısı arttıkça lineer sorgu yaptığından response süreleri feci şekilde arttı. Bu paralel query olayını çözmem gerekli.
Bu dökümanı okudum. Senin tavsiye edebileceğin başka döküman var mı? Şu aşamadan sonra ne yapmam gerekiyor. Çok fazla kaynak yok açıkcası.


Bu mesaja 1 cevap geldi.
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.