İşlem listesinde mysql uyku durumu süreci hakkında endişelenmeli miyim


Yanıtlar:


17

En güçlülerimiz bile bazen uyumalıyız. Uyku olmadan endişeli ve uykusuzluk her türlü ciddi semptomlara yol açabilir.

Daha ciddi: uyku durumu MySQL işleminin sorgusu ile yapıldığı, ancak istemci tarafının henüz çıkmadığı anlamına gelir. Birçok web uygulaması daha sonra bağlantılarını temizlemez, bu da uyku MySQL işlemlerine yol açar. Sadece bir avuç varsa endişelenmeyin; MySQL, yapılandırılabilir bir zaman aşımı süresinden (wait_timeout) sonra bunları temizler.

Veya web uygulamanız kalıcı bağlantılar ve bağlantı havuzu kullanıyorsa, çok fazla uyku işlemine sahip olmak tamamen normaldir: bu durumda uygulamanız örneğin 100 SQL bağlantısını açar ve açık tutar. Bu, bağlantı açma / kapama yükünü azaltır. Uygulamanız çok yoğun olmadığı sürece, neredeyse her SQL işleminin yapacak bir şeyi olmadığı normaldir, bu yüzden uyurlar.


5

Hayır, binlerce tane olmadıkça onlar için endişelenme. Genellikle, şu anda hiçbir şey yapmayan, ancak hala canlı olan bir veritabanı bağlantısını gösterirler.

Birçok web sitesi, bir sayfanın işlenmesinin başlangıcında, bir veritabanı bağlantısı açılacak, daha sonra sayfanın oluşturulması boyunca kullanılacak ve son olarak atılacak şekilde oluşturulmuştur. Atma işlemi düzgün bir şekilde yapılırsa, veritabanı bağlantısı kapatılır ve sunucu ilgili iş parçacığını öldürür, yani bu bağlantı işlem listesinden kaybolur.

Bağlantı kapatılmazsa, zaman aşımına kadar "SLEEP" durumunda kalabilir. Bu durumda çok fazla uyku sürecine girebilirsiniz. ancak db sunucusunda bellek sorunları ile karşılaşmazsanız, bu da büyük bir sorun değildir.


3

Max_connections değişkenini artırmadan önce show processlist komutunu çalıştırarak kaç tane etkileşimli olmayan bağlantınız olduğunu kontrol etmeniz gerekir.

Çok fazla uyku bağlantınız varsa, bir süre bekledikten sonra etkileşimli olmayan bağlantıyı kapatmak için "wait_timeout" değişkeninin değerini azaltmanız gerekir.

  • Wait_timeout değerini göstermek için:
OTURUM DEĞİŞKENLERİNİ 'wait_timeout' GİBİ GÖSTER;

+ --------------- + ------- +
| Değişken_adı | Değer |
+ --------------- + ------- +
| wait_timeout | 28800 |
+ --------------- + ------- +

değer saniye cinsindeyse, etkileşimli olmayan bağlantının hala 8 saate kadar olduğu anlamına gelir.

  • "Wait_timeout" değişkeninin değerini değiştirmek için:
SET oturumu wait_timeout = 600;
Sorgu tamam, 0 satır etkilendi (0.00 sn)

10 dakika sonra uyku bağlantısı hala mysql veya MariaDB uyuyorsa bu bağlantıyı bırakın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.