MySQL hatası nasıl düzeltilir: Çok Fazla Bağlantı

MySQL hatasına giriş: Çok Fazla Bağlantı

Yüksek 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 sunucuda artan tüketime dönüşür. Söz konusu web uygulaması bir MySQL veritabanı kullanıyorsa ve sorgular gerçekten çoksa (Web'in kötü programlanması veya web'i kullanan birçok kullanıcı tarafından), MySQL'in bu hatayı gösterme olasılığı vardır:

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 başka bir yolu, maksimum limiti bir MySQL sorgusu aracılığıyla eşit olarak 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 detayı sağlamak için, her X seferinde doğrulayan bir bash betiği oluşturabilir, hatta satırı arka plan programının başlangıç ​​veya yeniden başlatma bloğuna ekleyebilirsiniz 😉

Ama o zaman neden bu 2. seçeneği bilmek istiyorum? ... pekala, ben de öyle derdim. Ancak bir ay önce bir Ubuntu Sunucusu 1 numaralı yöntemi görmezden geldi, bu yüzden ... aşırı aptal işletim sistemlerinde, aynı şekilde çalışan bu 2. seçeneğimiz var 😉


6 yorum, sizinkini bırakın

Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   nex dijo

    İyi gönderi, MySql… FreeBSD'de çok kullanıyorlar,… .KZKG ^ Gaara?,… MySql'in FreeBSD'de nasıl kurulacağı ve yapılandırılacağı hakkında bir gönderi yaparsanız iyi olur: SSH (güvenli - kabuk), SSH (Web üzerinden), SFTP (SSH-Dosya Aktarım Protokolü), Apache - PHP- MySql, PHP5 ve PhpSysInfo Uzantıları.

    1.    KZKG ^ Gaara dijo

      Bunun için FreeBSD'yi kurmam gerekecek, şu anda zamanım olduğunu sanmıyorum, sadece iş değiştirdim ve birçok yeni sorumluluğum var 🙁

  2.   Saul dijo

    Son zamanlarda nodejs içeren bir proje için benzer bir şey yapmak zorunda kaldım. Benim durumumda 250'ye çıktı ve bu yeterliydi, şimdilik iyiyim. Bilgi için teşekkürler

  3.   Francisco dijo

    Merhaba, /etc/mysql/my.cfg adresini nasıl gireceğim konusunda bana yardım edebilir misin?

    VPS'im var ama PUTTY ile içeri giremiyorum.

    Selamlar.

  4.   yem dijo

    Seçenek 1'deki sorunu çözmek için - Yorumlu seçeneği ve sunucuyu yeniden başlatırken değişiklikleri saklayın, dosya sürüme göre düzenlenmelidir:

    ////////////////////////////////////////////////// ////////////////////
    // Ubuntu 16.04'te dizini değiştiriyorum ////////////////////////
    ////////////////////////////////////////////////// ////////////////////
    /etc/mysql/mysql.conf.d/mysqld.cnf dosyasını gördüm

    ////////////////////////////////////////////////// ////////////////////
    // Ubuntu 15.04'te dizini değiştiriyorum ////////////////////////
    ////////////////////////////////////////////////// ////////////////////
    vi /etc/mysql/mariadb.conf.d/mysqld.cnf

    ////////////////////////////////////////////////// ////////////////////
    // Ubuntu eski dizini değiştiriyorum ////////////////////////
    ////////////////////////////////////////////////// ////////////////////

    /etc/mysql/my.cnf dosyasını gördüm

    ////////////////////////////////////////////////// ////////////////////
    // bu satırı [mysqld] veya [mysql] etiketinin altına ekleyin //
    // Sonra sunucuyu yeniden başlatın //
    ////////////////////////////////////////////////// ////////////////////
    maks_bağlantılar = 500

  5.   kızgın dijo

    Hiçbir zaman sıfırdan öğretici onu nasıl değiştireceğinizi söyler