Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 33231|Απάντηση: 6

[Πηγή] Η MySQL αναλύει την υψηλή χρήση της CPU σε καταστάσεις υψηλής ταυτόχρονης χρήσης

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 5/9/2017 8:23:59 μ.μ. | | | |


Πρόσφατα, για ορισμένους λόγους, ο αριθμός των επισκέψεων στον ιστότοπο έχει αυξηθεί απότομα και από τον αριθμό, φαίνεται ότι ο αριθμός των ταυτόχρονων συνδέσεων είναι πάνω από 1.200

Επειδή η διαμόρφωση του διακομιστή είναι πολύ χαμηλή, μνήμη 1 πυρήνα και 2G και, στη συνέχεια, η πρόσβαση στον ιστότοπο είναι πολύ αργή όταν υπάρχουν πολλά άτομα


Χρησιμοποιούμε την κορυφαία εντολή για έλεγχο, η mysql καταλαμβάνει πολλή CPU και μνήμη και άλλες διαδικασίες είναι php-fpm που καταλαμβάνουν CPU και μνήμη, η οποία δεν είναι πολύ υψηλή

Εάν η mysql εκτελείται κανονικά, είναι ότι ορισμένες δηλώσεις SQL στην PHP προκαλούν προβλήματα και ο χρήστης root εισέρχεται στη διαχείριση mysql
mysql -u ρίζα -p
Εισαγάγετε τον κωδικό πρόσβασης και, στη συνέχεια, εισαγάγετε την ακόλουθη εντολή




Με αυτήν την εντολή, μπορούμε να δούμε ότι η βάση δεδομένων εκτελεί συνεχώς λειτουργίες διαγραφής με όπου συνθήκες.



pre_k_spider αυτός ο πίνακας είναι ένας πίνακας που καταγράφει τις προσβάσεις αράχνης, που πιθανώς προκαλούνται από μια εγκατεστημένη προσθήκη

Μπορούμε να δούμε ότι pre_k_spider πίνακας έχει περισσότερες από 100.000 εγγραφές και το ερώτημα διαρκεί 33 δευτερόλεπτα



Αδειάστε αποφασιστικά αυτόν τον πίνακα και, στη συνέχεια, μεταβείτε στο παρασκήνιο διαχείρισης για να κλείσετε τις σχετικές προσθήκες του πίνακα και να τον επαναφέρετε στο κανονικό!









Προηγούμενος:Υπηρεσία αναγνώρισης κωδικού επαλήθευσης Alibaba Cloud Cloud Marketplace
Επόμενος:MySQL 5.6.21 για να προβάλετε το αρχείο διαμόρφωσης my.cnf
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 6/9/2017 9:32:56 π.μ. |


Σήμερα ο ιστότοπος έχει κολλήσει ξανά και βρίσκεται μεγάλος αριθμός ύπνου

Αιτίες ύπνου:

1 Το πρόγραμμα-πελάτης δεν κάλεσε το mysql_close() πριν από την έξοδο.

2 Ο πελάτης κοιμόταν περισσότερο από wait_timeout ή interactive_timeout δευτερόλεπτα χωρίς να υποβάλει κανένα αίτημα στον διακομιστή.

3 Το πρόγραμμα πελάτη τερματίστηκε απότομα στη μέση μιας μεταφοράς δεδομένων

Εάν ο αριθμός των διεργασιών ύπνου την ίδια περίοδο είναι πολύ υψηλός και ο συνολικός αριθμός συνδέσεων σε άλλες καταστάσεις υπερβαίνει την τιμή max_connection, τότε η MySQL δεν μπορεί πλέον να επεξεργαστεί κανένα αίτημα εκτός από τον χρήστη root, δεν μπορεί να δημιουργήσει σύνδεση με οποιοδήποτε αίτημα ή κολλάει απευθείας

Λύση:

1. Πρώτα, ελέγξτε εάν το πρόγραμμά σας χρησιμοποιεί τη μέθοδο pconnect και, δεύτερον, ελέγξτε εάν το mysql_close() καλείται εγκαίρως πριν από την εκτέλεση της σελίδας. Προσπαθήστε να μην χρησιμοποιείτε τη μέθοδο pconnect, δηλαδή να χρησιμοποιείτε mysql_connect. Όταν εκτελείται το πρόγραμμα, θα πρέπει να γίνεται ρητή επίκληση του mysql_close

2. Προσθέστε wait_timeout και interactive_timeout στο my.cnf, ορίστε την τιμή μικρότερη, από προεπιλογή η τιμή wait_timeout είναι 8 ώρες, μπορείτε να την αλλάξετε σε 1 ώρα ή μισή ώρα. Με αυτόν τον τρόπο η mysql θα σκοτώσει τις νεκρές συνδέσεις πιο γρήγορα. Αποτρέψτε τον συνολικό αριθμό συνδέσεων να υπερβεί την τιμή max_connection.

wait_timeout πολύ μεγάλο θα προκαλέσει την έγκαιρη κυκλοφορία μεγάλου αριθμού διεργασιών SLEEP στη MySQL, μειώνοντας την απόδοση του συστήματος, αλλά εάν οι ρυθμίσεις είναι πολύ μικρές, ενδέχεται να αντιμετωπίσετε προβλήματα όπως "Η MySQL έχει φύγει"

Ορίστε την τιμή max_connection σε υψηλότερη τιμή, αλλά αυτό προφανώς δεν είναι κατάλληλο, όσο περισσότερες συνδέσεις έχετε, τόσο περισσότερο άγχος ασκεί στον διακομιστή σας. Στην πραγματικότητα, αυτές οι συνδέσεις είναι περιττές και η εξόντωσή τους το συντομότερο δυνατό είναι η καλύτερη πολιτική.

3. Αναλύστε το ερώτημα SQL του συστήματος βήμα προς βήμα, βρείτε την SQL που είναι πολύ αργή και βελτιστοποιήστε την



1)interactive_timeout:
Σημασία παραμέτρου: Ο αριθμός των δευτερολέπτων που περιμένει ο διακομιστής για μια δραστηριότητα πριν απενεργοποιήσει τη διαδραστική σύνδεση. Ένας αλληλεπιδραστικός πελάτης ορίζεται ως ένας υπολογιστής-πελάτης που χρησιμοποιεί CLIENT_INTERACTIVE επιλογή στην mysql_real_connect().
Προεπιλογή παραμέτρου: 28800 δευτερόλεπτα (8 ώρες)

(2)wait_timeout:
Σημασία παραμέτρου: Ο αριθμός των δευτερολέπτων που περιμένει ο διακομιστής για δραστηριότητα πριν κλείσει τη μη αλληλεπιδραστική σύνδεση.
Κατά την έναρξη του νήματος, η τιμή wait_timeout συνεδρίας αρχικοποιείται με βάση την τιμή του καθολικού wait_timeout ή του καθολικού interactive_timeout, ανάλογα με τον τύπο πελάτη (που ορίζεται CLIENT_INTERACTIVE τις επιλογές σύνδεσης του mysql_real_connect()).
Προεπιλογή παραμέτρου: 28800 δευτερόλεπτα (8 ώρες)

Υπάρχει ένα ανώτατο όριο στον μέγιστο αριθμό συνδέσεων που μπορεί να υποστηρίξει ο MySQL Server, καθώς κάθε σύνδεση δημιουργείται και καταναλώνει μνήμη, οπότε αναμένουμε από τους πελάτες να αποσυνδέσουν και να ελευθερώσουν την κατειλημμένη μνήμη μετά τη σύνδεση στον MySQL Server για να χειριστούν την αντίστοιχη λειτουργία. Εάν ο MySQL Server σας έχει μεγάλο αριθμό αδρανών συνδέσεων, όχι μόνο θα καταναλώνουν μάταια μνήμη, αλλά εάν οι συνδέσεις συνεχίσουν να συσσωρεύονται και να ανοίγουν, θα φτάσουν τελικά τον μέγιστο αριθμό συνδέσεων στον MySQL Server, ο οποίος θα αναφέρει το σφάλμα «πάρα πολλές συνδέσεις». Η ρύθμιση της τιμής του wait_timeout θα πρέπει να κρίνεται ανάλογα με τη λειτουργία του συστήματος. Αφού το σύστημα λειτουργεί για κάποιο χρονικό διάστημα, μπορείτε να ελέγξετε την κατάσταση σύνδεσης του τρέχοντος συστήματος μέσω της εντολής show processlist, εάν βρείτε μεγάλο αριθμό συνδεδεμένων διεργασιών σε κατάσταση αναστολής λειτουργίας, σημαίνει ότι η ρύθμιση παραμέτρων είναι πολύ μεγάλη και μπορείτε να κάνετε τις κατάλληλες προσαρμογές για να κάνετε μικρότερες προσαρμογές.


Εντολή SQL:



Αυτή η μέθοδος τροποποίησης είναι σεΜετά την επανεκκίνηση της υπηρεσίας mysql, δεν θα είναι έγκυρη, επομένως είναι καλύτερο να διαμορφώσετε αυτές τις δύο ιδιότητες στο αρχείο διαμόρφωσης mySQL.

Τροποποιήστε το αρχείο my.cnf στο Linux:




Δημοσιεύτηκε στις 6/9/2017 11:15:15 π.μ. |
Πρέπει να πάρω έναν διακομιστή master-slave
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 6/9/2017 11:15:49 π.μ. |
Δημοσιεύτηκε στις 2017-9-6 11:15
Πρέπει να πάρω έναν διακομιστή master-slave

Λόγος ρύθμισης παραμέτρων διακομιστή Η ρύθμιση παραμέτρων είναι χαμηλή   
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 6/9/2017 1:47:56 μ.μ. |
Επιλύθηκε το ζήτημα του "mysql-bin.000001" που καταλαμβάνει μεγάλο χώρο
http://www.itsvse.com/thread-2694-1-1.html
(Πηγή: Αρχιτέκτονας)

Μετά την εγκατάσταση της MySQL με θύρες, μετά από λίγο διαπίστωσα ότι ο χώρος /var ήταν ανεπαρκής, έλεγξα και διαπίστωσα ότι τα mysql-bin.000001, mysql-bin.000002 και άλλα αρχεία καταλάμβαναν χώρο, οπότε σε τι χρησιμεύουν αυτά τα αρχεία; Αυτό είναι το αρχείο καταγραφής λειτουργίας της βάσης δεδομένων, όπως ΕΝΗΜΕΡΩΣΗ πίνακα ή ΔΙΑΓΡΑΦΗ ορισμένων δεδομένων, ακόμα κι αν η δήλωση δεν ταιριάζει με τα δεδομένα, αυτή η εντολή θα αποθηκευτεί στο αρχείο καταγραφής, συμπεριλαμβανομένου του χρόνου εκτέλεσης κάθε δήλωσης, η οποία θα καταγραφεί επίσης.

Αυτό γίνεται κυρίως για τους ακόλουθους δύο σκοπούς:
1: Ανάκτηση δεδομένων
Εάν η βάση δεδομένων σας έχει πρόβλημα και έχετε ένα αντίγραφο ασφαλείας στο παρελθόν, μπορείτε να δείτε το αρχείο καταγραφής για να μάθετε ποια εντολή προκάλεσε το πρόβλημα της βάσης δεδομένων σας και να βρείτε έναν τρόπο να ανακτήσετε την απώλεια.
2: Συγχρονισμός δεδομένων μεταξύ διακομιστών master-slave
Όλες οι λειτουργίες στον κύριο διακομιστή καταγράφονται σε ένα αρχείο καταγραφής που μπορεί να χρησιμοποιήσει ο υποτελής διακομιστής για να διασφαλίσει ότι και οι δύο είναι συγχρονισμένοι.

Απλώς κλείστε το αρχείο καταγραφής


 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 9/10/2017 2:33:30 μ.μ. |
Η mysqld είναι επίσης CPU που καταλαμβάνει τα Windows παρακάτω



Λύση: Βελτιστοποίηση της πρότασης SQL
Δημοσιεύτηκε στις 30/12/2021 11:15:36 μ.μ. |
Υποστηρίξτε το!!!!!!!!!!!!!!!!
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com