MySQL veritabanı sistemi kullanan linux kullanıcılarının en büyük dertlerinden biri de uyuyan (sleep) sorgulardır. Onlarca binlerce ve gerekli bir işlemi olmayan sleep sorgular tüm mysql servisimizi meşgul edebilir. MySQL servisimizin yüksek yoğunlukta çalışması, yeni gelen isteklere geç yanıt vermesi ya da yanıt verememesi demektir.
- MySQL veritabanı üzerinde çalışan ölü sorguları aşağıdaki yazılım ile tespit edebiliriz.
- Tespit edilen sorgular /tmp/uyuyan_sql_islemler.txt çıktısı ile bir metin dosyasına kaydedilmektedir.
- Kaydedilen sorguları mysql servisimize kill komutuyla vererek durdurmamız gerekir.
- /tmp/uyuyan_sql_islemler.txt dosyamıza Kill komutu ile birlikte uyuyan işlemlerimizi kaydetmesini sağlıyoruz. Bu sayede -e parametresi ile metin dosyamızdaki satırları tek tek çalıştırarak, mysql servisimize uyuyan sorguların öldürülmesi için komut verebiliriz.
mysql -uroot -pSQLPAROLA -e “select concat(‘KILL ‘,id,’;’) from information_schema.processlist where user=’root’ and time > 200 into outfile ‘/tmp/uyuyan_sql_islemler.txt’;”
mysql -uroot -pSQLPAROLA -e “source /tmp/uyuyan_sql_islemler.txt;”
rm -rf /tmp/uyuyan_sql_islemler.txt
Yukartıdaki komutları sırası ile uyguladığımızda ölü işlemlerimiz birkez sonlandırılmış olacak. Bu kodları bir bash dosyası halinde düzenleyerek, cron yardımıyla sürekli çalıştırabilirsiniz. Bu durumda oluşan gereksiz sorgular sürekli olarak durdurulacaktır. Komutları alt alta yazıp .sh olarak kaydedebilirsiniz.
Bir cevap yazın