Cara memperbaiki ralat MySQL: Terlalu Banyak Sambungan

Pengenalan ralat MySQL: Terlalu Banyak Sambungan

Apabila anda mempunyai aplikasi web (laman web, blog, forum, dll.) yang mengalami permintaan yang tinggi, bermakna sebilangan besar pengguna melawatnya, ini diterjemahkan kepada peningkatan penggunaan sumber pelayan. Jika aplikasi web ini menggunakan pangkalan data MySQL dan pertanyaannya sangat banyak ( disebabkan oleh pengaturcaraan laman web yang lemah atau jumlah pengguna yang tinggi ), MySQL mungkin memaparkan ralat ini:

mysqli_connect(): (HY000/1040): Too many connections

Apakah maksud ralat MySQL: Terlalu Banyak Sambungan?

Ini bermaksud terlalu banyak permintaan yang masuk ke MySQL, lebih banyak daripada yang dapat diterima, lebih daripada permintaan atau menunggu.

Bagaimana menyelesaikannya?

Ringkasnya, kita mesti meningkatkan had maksimum permintaan (sambungan) yang disokong oleh MySQL.

Saya akan memberi anda dua pilihan untuk menyelesaikan masalah ini:

1. Kami mengedit fail /etc/mysql/my.cfg:

nano /etc/mysql/my.cfg

Di dalamnya kita meletakkan perkara berikut di bawah yang tertulis [mysql]:

max_connections = 500 max_user_connections = 500

Ini akan meningkatkan bilangan sambungan maksimum dari 100 (yang merupakan lalai) menjadi 500.

Kami menyimpan dan keluar, kemudian kita mulakan semula perkhidmatan MySQL dan itu sahaja. Perubahan ini kekal.

2. Satu lagi cara untuk menyelesaikan masalah ini adalah dengan mengubah had maksimum, tetapi menggunakan pertanyaan MySQL.

Mari kita tunjukkan had semasa:

mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'

Ini akan menunjukkan kepada kita sesuatu seperti ini:

+ ----------------- + ------- + | Pembolehubah_nama | Nilai | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +

Dengan kata lain, had semasa ialah 151 sambungan, baiklah, tingkatkannya menjadi 500 dengan cara pertanyaan:

mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'

Sedia!

Masalah dengan cara ini ialah apabila perkhidmatan dimulakan semula, konfigurasi ini akan hilang.

Untuk mengimbangi butiran ini, anda boleh membuat skrip bash yang menyemak setiap jumlah masa X, atau menambah baris pada permulaan atau mulakan semula blok daemon 

Tetapi mengapa saya ingin tahu pilihan ke-2 ini? … baik, itulah yang saya katakan. Tetapi sebulan yang lalu Pelayan Ubuntu mengabaikan kaedah No.1, jadi... dalam kes ekstrem OS bodoh, kami mempunyai pilihan ke-2 ini yang berfungsi dengan baik 


Tambahkan sebagai sumber pilihan dalam Google