Mysql ODBC Bağlantı Kapatma Problemi
-
Merhabalar,
Bir proje yaptık fakat projeyi tamamladığımızda bir sorun tespit ettik.
Şöyleki;
Microsoft'ın ODBC driverları açık bağlantıları kapatmıyor ve sleep modunda bekliyor. MAX_CONNECTIONS ayarındaki kişi sayısına ulaşınca ise Too Many Connection hatası veriyor.
WAIT_TIMEOUT süresini 10 yaptık ve 10 saniye sonra sleep olarak bekleyen bağlantılar kapanıyor.
Şunu sormak istiyorum, ben bu WAIT_TIMEOUT süresini 0 yada 1 yaparsam ne olur?
Yada bu problem için ne önerirsiniz?Ayrıca MAX_CONNECTIONS değerini 100'den 500'e çıkardık.
Not: Sunucu 8 GB ramli, içerisinde tek site barındıracak olan bir sitedir.
-
upp
-
Bu bir web sitesiyse, bağlantı işi bittikten sonra kapatılmalı.
.NET olarak konuşuyorum:
https://msdn.microsoft.com/en-us/library/system.data.odbc.odbcconnection.close(v=vs.110).aspx
Kısaca veritabanı bağlantısını using deyimi içine yazarsanız close metodu otomatik çalıştırılır işiniz bittiğinde.
PHP'de durum daha trajik, her sayfa bir application olarak ele alındığı ve her kullanıcı için ayrı olduğunu gözönüne alırsak işi biter bitmez kapatmanız lazım.
-
Hocam projeyi ne ile yazdınız?
-
.net ile yazdım ama kapanmıyor ağzına sıçtığımın bağlantısı ya using ile denedim, diğer türlü try catch blogunda yazıp finally kısmında kapattım yok yok yok kapanmıyor.
Sleep modunda kalıyor ve sürekli saniye olarak sayıyor. 10 olarak ayarlayınca sleepler 10'uncu saniyede siliniyor otomatik. Çözüm olarak bunu ürettim.
-
Şöyle birşey var ayrıca;
ODBC veri kaynaklarına giriyorum, MySQL 3.51 Driver'ın pooling seçeneğini kapatıyorum. Yinede Sleep olarak kalıyor hepsi.
Çözümü artık MySQL veritabanında olacak. Merak ettiğim WAIT_TIMEOUT 10 olmasının ne zararı olur?
-
https://stackoverflow.com/questions/33871229/c-sharp-odbcconnection-not-closing
Yukarıdaki bağlantıda aynı problemden bahsedilmiş. Diyor ki benim DbDataReader'ım açık kalmış. Bu nesneyi de using içine koydum, sorun çözüldü. Belki sizde de durum aynıdır. ODBC nesnesini kullanan bir başka nesne halen yaşamaya devam ediyordur.
-
Hocam ben şöyle yapmıştım... 1 adet JavaScript dosyam vardı ve X Client için Bağlantıyı sürekli açık tutmam gerekiyordu.
Isteğim zaman acıp kapatmak için Long polling ile çözdüm ve şöyle birşey yaptım ;
Db.Open();
Bir döngü içerisinde
Select 1=1; sorgusunu 2 saniyede bir calıstırıyordum..
Bu sayede bağlantım hiç kapanmıyordu ve bağlantıyı sonlandırmak için de Db.Close(); diyip yazdığım poling döngüsünde de QueryCalıstırılsınmı diye bir boolean değer ile kontrol sağlıyordum
Sorunun bu mu bilmiyorum ama bi diyim dedim belki budur..
MySql de bir sorgu calıstıktan sonra istemci cevap vermediğinde belirli bir süreden sonra bağlantıyı kesiyor... Ya işleyeceksin o değeri benim belirlediğim sürede yada bağlantıyı kapatırım diyor yani MySql.
-
Entity kullanmış olsaydın sıkıntı olmazdı.
-
YeniHarman bunu yazdı
https://stackoverflow.com/questions/33871229/c-sharp-odbcconnection-not-closing
Yukarıdaki bağlantıda aynı problemden bahsedilmiş. Diyor ki benim DbDataReader'ım açık kalmış. Bu nesneyi de using içine koydum, sorun çözüldü. Belki sizde de durum aynıdır. ODBC nesnesini kullanan bir başka nesne halen yaşamaya devam ediyordur.
Tek sayfadaki tek bağlantıda bile hocam kapanmıyor. Eminim yani kapanmadığına. MySQL forumlarında aynı hatadan bir çok kişi bahsetmiş. Çözüm olarak regeditten bir kaç yeri değiştirtmişler ama ben yaptığımda sorunım çözülmedi.
MhmdAlmz bunu yazdıHocam ben şöyle yapmıştım... 1 adet JavaScript dosyam vardı ve X Client için Bağlantıyı sürekli açık tutmam gerekiyordu.
Isteğim zaman acıp kapatmak için Long polling ile çözdüm ve şöyle birşey yaptım ;
Db.Open();
Bir döngü içerisinde
Select 1=1; sorgusunu 2 saniyede bir calıstırıyordum..
Bu sayede bağlantım hiç kapanmıyordu ve bağlantıyı sonlandırmak için de Db.Close(); diyip yazdığım poling döngüsünde de QueryCalıstırılsınmı diye bir boolean değer ile kontrol sağlıyordum
Sorunun bu mu bilmiyorum ama bi diyim dedim belki budur..
MySql de bir sorgu calıstıktan sonra istemci cevap vermediğinde belirli bir süreden sonra bağlantıyı kesiyor... Ya işleyeceksin o değeri benim belirlediğim sürede yada bağlantıyı kapatırım diyor yani MySql.
Yok hocam hiç bir şekilde kapatamıyorum. Sunucu üzerinde değiştirdik artık ayarları.
-
http://www.csharpnedir.com/articles/read/?id=1034
Belki işini görür.