Εισαγωγή στο σφάλμα MySQL: Πάρα πολλές συνδέσεις
Όταν έχετε μια διαδικτυακή εφαρμογή (ιστότοπο, ιστολόγιο, φόρουμ κ.λπ.) που αντιμετωπίζει υψηλή ζήτηση, που σημαίνει ότι την επισκέπτεται μεγάλος αριθμός χρηστών, αυτό μεταφράζεται σε αυξημένη κατανάλωση πόρων διακομιστή. Εάν αυτή η διαδικτυακή εφαρμογή χρησιμοποιεί μια βάση δεδομένων MySQL και τα ερωτήματα είναι πολλά ( λόγω κακού προγραμματισμού ιστότοπου ή μεγάλου όγκου χρηστών ), η MySQL ενδέχεται να εμφανίσει αυτό το σφάλμα:
mysqli_connect(): (HY000/1040): Too many connections
Τι σημαίνει το σφάλμα MySQL: Πάρα πολλές συνδέσεις;
Αυτό σημαίνει ότι έρχονται πάρα πολλά αιτήματα στη MySQL, περισσότερο από ό, τι μπορεί να δεχτεί, περισσότερο από ό, τι μπορεί να περιμένει στην ουρά ή να περιμένει.
Πώς να το λύσετε;
Απλό, πρέπει να αυξήσουμε το μέγιστο όριο αιτημάτων (συνδέσεις) που υποστηρίζει η MySQL.
Θα σας δώσω δύο επιλογές για να διορθώσετε αυτό το πρόβλημα:
1. Επεξεργαζόμαστε το αρχείο /etc/mysql/my.cfg:
nano /etc/mysql/my.cfg
Σε αυτό βάζουμε τα ακόλουθα κάτω από όπου λέει [mysql]:
max_connections = 500 max_user_connections = 500
Αυτό θα αυξήσει τον μέγιστο αριθμό συνδέσεων από 100 (που είναι η προεπιλογή) σε 500.
Αποθηκεύουμε και βγούμε, μετά κάνουμε επανεκκίνηση της υπηρεσίας MySQL και αυτό είναι. Αυτή η αλλαγή είναι μόνιμη.
2. Ένας άλλος τρόπος για να λύσετε αυτό το πρόβλημα είναι αλλάζοντας το μέγιστο όριο, αλλά χρησιμοποιώντας ένα ερώτημα MySQL.
Ας δείξουμε πρώτα το τρέχον όριο:
mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'
Αυτό θα μας δείξει κάτι τέτοιο:
+ ----------------- + ------- + | Μεταβλητή_ όνομα | Τιμή | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +
Με άλλα λόγια, το τρέχον όριο είναι 151 συνδέσεις, λοιπόν, ας το αυξήσουμε σε 500 μέσω ενός ερωτήματος:
mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'
Ετοιμη!
Το πρόβλημα με αυτόν τον τρόπο είναι ότι όταν επανεκκινηθεί η υπηρεσία, αυτή η διαμόρφωση χάνεται.
Για να αντισταθμίσετε αυτήν τη λεπτομέρεια, μπορείτε να δημιουργήσετε ένα σενάριο bash που ελέγχει κάθε χρονικό διάστημα X ή ακόμα και να προσθέσετε τη γραμμή στο μπλοκ έναρξης ή επανεκκίνησης του δαίμονα
Αλλά τότε γιατί θέλω να μάθω αυτή τη 2η επιλογή; … Λοιπόν, αυτό είπα. Αλλά πριν από ένα μήνα, ένας διακομιστής Ubuntu αγνόησε τη μέθοδο No.1, οπότε... σε ακραίες περιπτώσεις ηλίθιου λειτουργικού συστήματος, έχουμε αυτή τη 2η επιλογή που λειτουργεί εξίσου καλά