MySQL hatasına giriş: Çok Fazla Bağlantı
Yoğun talep gören, yani çok sayıda kullanıcının ziyaret ettiği bir web uygulamanız (site, blog, forum vb.) olduğunda, bu durum sunucu kaynak tüketiminin artmasına yol açar. Eğer bu web uygulaması MySQL veritabanı kullanıyorsa ve sorgular çok fazlaysa ( kötü web sitesi programlaması veya yüksek kullanıcı sayısı nedeniyle ), MySQL şu hatayı gösterebilir:
mysqli_connect(): (HY000/1040): Too many connections
MySQL: Too Many Connections hatası ne anlama geliyor?
Bu, MySQL'e, kabul edebileceğinden çok, sıraya koyabileceğinden veya bekleyebileceğinden daha fazla istek geldiği anlamına gelir.
Nasıl çözeceksin?
Basit, MySQL'in desteklediği maksimum istek (bağlantı) sınırını artırmalıyız.
Bu sorunu çözmek için size iki seçenek sunacağım:
1. /etc/mysql/my.cfg dosyasını düzenliyoruz:
nano /etc/mysql/my.cfg
İçinde [mysql] yazan yere aşağıdakileri koyuyoruz:
max_connections = 500 max_user_connections = 500
Bu, 100'den (varsayılan olan) maksimum bağlantı sayısını 500'e çıkaracaktır.
Kaydedip çıkıyoruz, ardından MySQL hizmetini yeniden başlatıyoruz ve hepsi bu. Bu değişiklik kalıcıdır.
2. Bu sorunu çözmenin bir başka yolu da, MySQL sorgusu kullanarak maksimum limiti değiştirmektir.
İlk önce mevcut sınırı gösterelim:
mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'
Bu bize şöyle bir şey gösterecek:
+ ----------------- + ------- + | Değişken_adı | Değer | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +
Yani mevcut limit 151 bağlantı, peki, bir sorgu ile bunu 500'e çıkaralım:
mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'
Hazır!
Bu şekilde sorun, hizmet yeniden başlatıldığında bu yapılandırmanın kaybolmasıdır.
Bu ayrıntıyı telafi etmek için, her X zaman diliminde bir kontrol eden bir bash betiği oluşturabilir, hatta bu satırı arka plan programının başlangıç veya yeniden başlatma bloğuna ekleyebilirsiniz
Peki o zaman neden bu 2. seçeneği bilmek istiyorum? … ben de öyle dedim. Ancak bir ay önce bir Ubuntu Sunucusu 1 numaralı yöntemi görmezden geldi, bu yüzden... aşırı aptal işletim sistemi vakalarında, aynı şekilde işe yarayan bu 2. seçeneğe sahibiz