Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 33231|Svar: 6

[Kilde] MySQL analyserer højt CPU-forbrug i situationer med høj samtidighed

[Kopier link]
Opslået på 05/09/2017 20.23.59 | | | |


For nylig er antallet af besøg på hjemmesiden steget kraftigt af forskellige årsager, og ud fra tallet kan man se, at antallet af samtidige forbindelser er over 1.200

Fordi serverkonfigurationen er meget lav, 1 kerne og 2G hukommelse, og hjemmesiden er meget langsom at få adgang til, når der er mange mennesker


Vi bruger topkommandoen til at tjekke, mysql bruger meget CPU og hukommelse, og andre processer bruger php-fpm, der optager CPU og hukommelse, hvilket ikke er særlig højt

Hvis MySQL kører normalt, er det sådan, at nogle SQL-sætninger i PHP får problemer til at blive opdaget, og root-brugeren går ind i mysql-administration
mysql -u root -p
Indtast adgangskoden, og indtast derefter følgende kommando




Med denne kommando kan vi se, at databasen konstant udfører sletningsoperationer med where-betingelser.



pre_k_spider denne tabel er en tabel, der registrerer spider-adgang, formodentlig forårsaget af et installeret plugin

Vi kan se, at pre_k_spider tabel har mere end 100.000 poster, og forespørgslen tager 33 sekunder



Tøm denne tabel beslutsomt, og gå derefter til administrationsbaggrunden for at lukke de relevante plug-ins i tabellen og gendanne den til normal!









Tidligere:Alibaba Cloud Cloud Marketplace Verifikationskode Genkendelsestjeneste
Næste:MySQL 5.6.21 for at se MY.CNF-konfigurationsfilen
 Udlejer| Opslået på 06/09/2017 09.32.56 |


I dag sidder hjemmesiden fast igen, og der findes et stort antal søvn

Årsager til søvn:

1 Klientprogrammet kaldte ikke mysql_close() før afsluttingen.

2 Klienten havde sovet mere end wait_timeout eller interactive_timeout sekunder uden at sende nogen anmodninger til serveren.

3 Klientprogrammet sluttede brat midt i en dataoverførsel

Hvis antallet af søvnprocesser i samme periode er for højt, og det samlede antal forbindelser i andre tilstande overstiger max_connection-værdien, kan MySQL ikke længere behandle forespørgsler undtagen root-brugeren, kan ikke etablere forbindelse med nogen anmodning eller hænger direkte

Løsning:

1. For det første skal du tjekke, om dit program bruger pconnect-metoden, og for det andet tjekke om mysql_close() kaldes i tide før siden eksekveres. Prøv ikke at bruge pconnect-metoden, altså brug mysql_connect. Når programmet eksekveres, skal mysql_close eksplicit kaldes

2. Tilføj wait_timeout og interactive_timeout til my.cnf, sæt værdien mindre, som standard er wait_timeout værdi 8 timer, du kan ændre den til 1 time eller en halv time. På den måde vil MySQL dræbe døde forbindelser hurtigere. Forhindre, at det samlede antal forbindelser overstiger max_connection-værdien.

wait_timeout for stor vil medføre, at mange SLEEP-processer i MySQL frigives i tide, hvilket trækker systemets ydeevne ned, men hvis indstillingerne er for små, kan du støde på problemer som "MySQL er væk"

Sæt max_connection-værdien til en højere værdi, men det er selvfølgelig ikke passende, jo flere forbindelser du har, jo mere pres lægger det på din server. Faktisk er disse forbindelser overflødige, og det er den bedste politik at afbryde dem så hurtigt som muligt.

3. Analyser systemets SQL-forespørgsel trin for trin, find den SQL, der er for langsom, og optimer den



1)interactive_timeout:
Parameterbetydning: Antallet af sekunder, hvor serveren venter på en aktivitet, før den slukker den interaktive forbindelse. En interaktiv klient defineres som en klient, der bruger CLIENT_INTERACTIVE mulighed i mysql_real_connect().
Standardparameter: 28800 sekunder (8 timer)

(2)wait_timeout:
Parameterbetydning: Antallet af sekunder, hvor serveren venter på aktivitet, før den lukker den ikke-interaktive forbindelse.
Når tråden starter, initialiseres sessionens værdi wait_timeout baseret på den globale wait_timeout eller globale interactive_timeout-værdi, afhængigt af klienttypen (defineret CLIENT_INTERACTIVE forbindelsesmulighederne mysql_real_connect()).
Standardparameter: 28800 sekunder (8 timer)

Der er en øvre grænse for det maksimale antal forbindelser, som MySQL Server kan understøtte, da hver forbindelse etableres og bruger hukommelse, så vi forventer, at klienterne afbryder forbindelsen og frigør den optagede hukommelse efter forbindelse til MySQL Server for at håndtere den tilsvarende operation. Hvis din MySQL Server har et stort antal inaktive forbindelser, vil de ikke kun forbruge hukommelse forgæves, men hvis forbindelserne fortsætter med at akkumuleres og åbnes, vil de til sidst nå det maksimale antal forbindelser i MySQL Server, som vil rapportere fejlen 'for mange forbindelser'. Værdifastsættelsen af wait_timeout bør vurderes ud fra systemets funktion. Efter at systemet har kørt i en periode, kan du tjekke forbindelsesstatus for det nuværende system via kommandoen show processlist; hvis du finder et stort antal forbundne processer i dvaletilstand, betyder det, at parameterindstillingen er for stor, og du kan foretage passende justeringer for at lave mindre justeringer.


SQL-kommando:



Denne modifikationsmetode er iEfter genstart af MySQL-tjenesten vil den være ugyldig, så det er bedst at konfigurere disse to egenskaber i MySQL-konfigurationsfilen.

Ændr my.cnf-filen under Linux:




Opslået på 06/09/2017 11.15.15 |
Jeg skal have en master-slave server
 Udlejer| Opslået på 06/09/2017 11.15.49 |
Vrchary blev offentliggjort den 6-9-2017 kl. 11:15
Jeg skal have en master-slave server

Serverkonfigurationsårsag Konfigurationen er lav   
 Udlejer| Opslået på 06/09/2017 13.47.56 |
Løste problemet med "mysql-bin.000001", der fylder meget
http://www.itsvse.com/thread-2694-1-1.html
(Kilde: Arkitekt)

Efter at have installeret MySQL med porte, fandt jeg efter et stykke tid, at /var-pladsen var utilstrækkelig, jeg tjekkede og fandt ud af, at mysql-bin.000001, mysql-bin.000002 og andre filer fyldte plads, så hvad er disse filer til? Dette er operationsloggen for databasen, såsom UPDATE en tabel eller DELETE nogle data, selvom sætningen ikke matcher dataene, vil denne kommando blive gemt i logfilen, inklusive eksekveringstiden for hver sætning, som også vil blive registreret.

Dette gøres hovedsageligt af følgende to formål:
1: Datagendannelse
Hvis din database har et problem, og du har en backup før, kan du kigge i logfilen for at finde ud af, hvilken kommando der forårsagede dit databaseproblem, og finde en måde at gendanne tabet på.
2: Synkroniser data mellem master-slave-servere
Alle operationer på den primære server registreres i en log, som slaveserveren kan bruge for at sikre, at begge er synkroniserede.

Luk bare loggen


 Udlejer| Opslået på 09/10/2017 14.33.30 |
mysqld er også CPU-optaget af Windows nedenfor



Løsning: Optimer SQL-sætningen
Opslået på 30/12/2021 23.15.36 |
Støt det!!!!!!!!!!!!!!!!
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com