Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 33231|Svare: 6

[Kilde] MySQL analyserer høy CPU-bruk i situasjoner med høy samtidighet

[Kopier lenke]
Publisert på 05.09.2017 20:23:59 | | | |


Nylig har antallet nettsidebesøk økt kraftig av ulike grunner, og fra tallet kan man se at antallet samtidige tilkoblinger er mer enn 1 200

Fordi serverkonfigurasjonen er veldig lav, 1 kjerne og 2G-minne, og nettsiden er veldig treg å få tilgang til når det er mange folk


Vi bruker toppkommandoen for å sjekke, mysql bruker mye CPU og minne, og andre prosesser bruker php-fpm som tar opp CPU og minne, noe som ikke er veldig høyt

Hvis mysql kjører normalt, er det slik at noen SQL-setninger i PHP fører til at problemer oppdages, og root-brukeren går inn i mysql-administrasjon
MySQL -u root -p
Skriv inn passordet, og deretter følgende kommando




Med denne kommandoen kan vi se at databasen kontinuerlig utfører sletteoperasjoner med where-betingelser.



pre_k_spider denne tabellen er en tabell som registrerer spider-tilganger, antakelig forårsaket av en installert plugin

Vi kan se at tabellen pre_k_spider har mer enn 100 000 poster, og spørringen tar 33 sekunder



Tøm denne tabellen bestemt, og gå deretter til administrasjonsbakgrunnen for å lukke de relevante pluginene i tabellen og gjenopprette den til normal!









Foregående:Alibaba Cloud Cloud Marketplace Verifiseringskode Gjenkjenningstjeneste
Neste:MySQL 5.6.21 for å se MY.CNF-konfigurasjonsfilen
 Vert| Publisert på 06.09.2017 09:32:56 |


I dag sitter nettsiden fast igjen, og det finnes mye søvn

Årsaker til søvn:

1 Klientprogrammet kalte ikke mysql_close() før det avsluttet.

2 Klienten hadde sovet mer enn wait_timeout eller interactive_timeout sekunder uten å sende noen forespørsler til serveren.

3 Klientprogrammet ble brått avsluttet midt i en dataoverføring

Hvis antallet søvnprosesser i samme periode er for høyt, og det totale antallet tilkoblinger i andre tilstander overstiger max_connection-verdien, kan ikke MySQL lenger behandle noen forespørsler unntatt root-brukeren, kan ikke etablere forbindelse med noen forespørsel, eller henger seg direkte

Løsning:

1. Først, sjekk om programmet ditt bruker pconnect-metoden, og for det andre, sjekk om mysql_close() kalles i tide før siden kjøres. Prøv å unngå pconnect-metoden, altså bruk mysql_connect. Når programmet kjøres, skal mysql_close eksplisitt kalles

2. Legg wait_timeout og interactive_timeout til my.cnf, sett verdien mindre, som standard er wait_timeout verdien 8 timer, du kan endre den til 1 time eller en halvtime. På denne måten vil mysql drepe døde tilkoblinger raskere. Forhindre at det totale antallet tilkoblinger overstiger max_connection-verdien.

wait_timeout for stor vil føre til at mange SLEEP-prosesser i MySQL frigjøres over tid, noe som trekker ned systemytelsen, men hvis innstillingene er for små, kan du støte på problemer som «MySQL har forsvunnet».

Sett max_connection-verdien til en høyere verdi, men dette er åpenbart ikke passende, jo flere tilkoblinger du har, desto mer belastning legger det på serveren din. Faktisk er disse tilkoblingene overflødige, og å avslutte dem så snart som mulig er den beste politikken.

3. Analyser systemets SQL-spørring steg for steg, finn SQL-en som er for treg, og optimaliser den



1)interactive_timeout:
Parameterbetydning: Antall sekunder serveren venter på en aktivitet før den slår av den interaktive tilkoblingen. En interaktiv klient defineres som en klient som bruker CLIENT_INTERACTIVE alternativ i mysql_real_connect().
Standardparameter: 28800 sekunder (8 timer)

(2)wait_timeout:
Parameterbetydning: Antall sekunder serveren venter på aktivitet før den lukker den ikke-interaktive forbindelsen.
Når tråden starter, initialiseres verdien wait_timeout økt basert på den globale wait_timeout eller den globale interactive_timeout-verdien, avhengig av klienttypen (definert CLIENT_INTERACTIVE tilkoblingsalternativene til mysql_real_connect()).
Standardparameter: 28800 sekunder (8 timer)

Det finnes en øvre grense for det maksimale antallet tilkoblinger som MySQL Server kan støtte, siden hver tilkobling etableres og bruker minne, så vi forventer at klientene kobler fra og frigjør det opptatte minnet etter tilkobling til MySQL Server for å håndtere den tilsvarende operasjonen. Hvis MySQL-serveren din har mange inaktive tilkoblinger, vil de ikke bare bruke minne forgjeves, men hvis tilkoblingene fortsetter å hope seg opp og åpnes, vil de til slutt nå det maksimale antallet tilkoblinger i MySQL Server, som vil rapportere feilmeldingen 'for mange tilkoblinger'. Verdiinnstillingen til wait_timeout bør vurderes ut fra systemets funksjon. Etter at systemet har kjørt en stund, kan du sjekke tilkoblingsstatusen til det nåværende systemet via kommandoen show processlist; hvis du finner et stort antall tilkoblede prosesser i dvalemodus, betyr det at parameterinnstillingen er for stor, og du kan gjøre passende justeringer for å gjøre mindre justeringer.


SQL-kommando:



Denne modifikasjonsmetoden er iEtter å ha startet MySQL-tjenesten på nytt, vil den være ugyldig, så det er best å konfigurere disse to egenskapene i MySQL-konfigurasjonsfilen.

Endre my.cnf-filen under Linux:




Publisert på 06.09.2017 11:15:15 |
Jeg må skaffe meg en master-slave-server
 Vert| Publisert på 06.09.2017 11:15:49 |
Vrchary publisert 2017-9-6 11:15
Jeg må skaffe meg en master-slave-server

Serverkonfigurasjonsårsak Konfigurasjonen er lav   
 Vert| Publisert på 06.09.2017 13:47:56 |
Løste problemet med at "mysql-bin.000001" tok opp mye plass
http://www.itsvse.com/thread-2694-1-1.html
(Kilde: Arkitekt)

Etter å ha installert MySQL med porter, fant jeg etter en stund ut at /var-plassen var utilstrekkelig, jeg sjekket og fant ut at mysql-bin.000001, mysql-bin.000002 og andre filer tok opp plass, så hva er disse filene til? Dette er operasjonsloggen til databasen, for eksempel UPDATE en tabell, eller DELETE noen data, selv om setningen ikke samsvarer med dataene, vil denne kommandoen bli lagret i loggfilen, inkludert utførelsestiden for hver setning, som også vil bli registrert.

Dette gjøres hovedsakelig for følgende to formål:
1: Datagjenoppretting
Hvis databasen din har et problem og du har en sikkerhetskopi før, kan du se på loggfilen for å finne ut hvilken kommando som forårsaket databaseproblemet og finne en måte å gjenopprette tapet på.
2: Synkroniser data mellom master-slave-servere
Alle operasjoner på primærserveren blir registrert i en logg som slaveserveren kan bruke for å sikre at begge er synkronisert.

Bare lukk loggen


 Vert| Publisert på 09.10.2017 14:33:30 |
mysqld er også CPU-opptatt av Windows nedenfor



Løsning: Optimaliser SQL-setningen
Publisert på 30.12.2021 23:15:36 |
Støtt det!!!!!!!!!!!!!!!!
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com