Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 33231|Odgovoriti: 6

[Vir] MySQL analizira visoko porabo procesorja v situacijah visoke sočasnosti

[Kopiraj povezavo]
Objavljeno na 5. 09. 2017 20:23:59 | | | |


V zadnjem času se je iz nekaterih razlogov število obiskov spletnih strani močno povečalo, iz podatkov pa je razvidno, da je število sočasnih povezav več kot 1.200

Ker je strežniška konfiguracija zelo nizka, 1 jedro in 2G pomnilnik, poleg tega pa je dostop do spletne strani zelo počasen, ko je veliko ljudi


Uporabljamo zgornji ukaz za preverjanje, mysql porabi veliko CPU in pomnilnika, drugi procesi pa php-fpm zavzemajo CPU in pomnilnik, kar ni zelo visoko

Če mysql teče normalno, se zgodi, da nekateri SQL stavki v PHP-ju povzročijo odkrivanje težav, zato root uporabnik vnese mysql management
mysql -u koren -p
Vnesite geslo, nato vnesite naslednji ukaz




S tem ukazom lahko vidimo, da podatkovna baza nenehno izvaja operacije brisanja s pogoji where.



pre_k_spider tej tabeli je tabela, ki beleži dostope pajkov, verjetno povzročene z nameščenim vtičnikom

Vidimo, da ima pre_k_spider tabeli več kot 100.000 zapisov, poizvedba pa traja 33 sekund



Odločno izpraznite to tabelo, nato pa pojdite v ozadje upravljanja, da zaprete ustrezne vtičnike tabele in jo obnovite v normalno stanje!









Prejšnji:Alibaba Cloud Cloud Marketplace storitev za prepoznavanje verifikacijskih kod
Naslednji:MySQL 5.6.21 za ogled konfiguracijske datoteke my.cnf
 Najemodajalec| Objavljeno na 6. 09. 2017 09:32:56 |


Danes je spletna stran spet zataknjena in najde veliko spanja

Vzroki za spanje:

1 Odjemalski program ni poklical mysql_close() pred izhodom.

2 Odjemalec je spal več kot wait_timeout ali interactive_timeout sekund, ne da bi strežniku poslal kakršnekoli zahteve.

3 Odjemalski program se je nenadoma končal sredi prenosa podatkov

Če je število procesov spanja v istem obdobju preveliko in skupno število povezav v drugih stanjih presega vrednost max_connection, MySQL ne more več obdelovati nobenih zahtev razen root uporabnika, ne more vzpostaviti povezave z nobeno zahtevo ali se neposredno zatakne

Rešitev:

1. Najprej preverite, ali vaš program uporablja metodo pconnect, in drugič, ali je mysql_close() poklican pravočasno pred izvajanjem strani. Poskusi ne uporabljati metode pconnect, torej uporabi mysql_connect. Ko se program zažene, je treba mysql_close eksplicitno sprožiti

2. Dodajte wait_timeout in interactive_timeout v my.cnf, nastavite vrednost manjšo, privzeto je vrednost wait_timeout 8 ur, lahko jo spremenite na 1 uro ali pol ure. Na ta način bo mysql hitreje uničil mrtve povezave. Preprečite, da skupno število povezav preseže vrednost max_connection.

wait_timeout prevelik bo povzročil, da bo veliko število SLEEP procesov v MySQL pravočasno sproščenih, kar zmanjša delovanje sistema, vendar če so nastavitve premajhne, se lahko pojavijo težave, kot je "MySQL je izginil"

Nastavite vrednost max_connection na višjo vrednost, vendar to očitno ni primerno, več kot imate povezav, večji stres to povzroča vašemu strežniku. Pravzaprav so te povezave odvečne, zato je njihova prekinitev čim prej najboljša politika.

3. Analizirajte SQL poizvedbo sistema korak za korakom, poiščite prepočasen SQL in ga optimizirajte



1)interactive_timeout:
Pomen parametra: Število sekund, ki jih strežnik počaka na aktivnost, preden izklopi interaktivno povezavo. Interaktivni odjemalec je definiran kot odjemalec, ki uporablja CLIENT_INTERACTIVE možnost v mysql_real_connect().
Privzeti parameter: 28800 sekund (8 ur)

(2)wait_timeout:
Pomen parametra: Število sekund, ki jih strežnik počaka na aktivnost, preden zapre neinteraktivno povezavo.
Ko se nit začne, se vrednost wait_timeout seje inicializira na podlagi globalne vrednosti wait_timeout ali globalne interactive_timeout, odvisno od vrste odjemalca (definirane CLIENT_INTERACTIVE možnostih povezave mysql_real_connect()).
Privzeti parameter: 28800 sekund (8 ur)

Obstaja zgornja meja največjega števila povezav, ki jih lahko MySQL Server podpira, saj je vsaka povezava vzpostavljena in porabi pomnilnik, zato pričakujemo, da se bodo odjemalci po povezavi z MySQL Server odklopili in sprostili zasedeni pomnilnik za izvedbo ustrezne operacije. Če ima vaš MySQL Server veliko število neaktivnih povezav, ne le da bodo zaman porabile pomnilnik, ampak če se povezave še naprej kopičijo in odpirajo, bodo sčasoma dosegle največje število povezav v MySQL Serverju, ki bo poročal o napaki 'preveč povezav'. Nastavitev vrednosti wait_timeout je treba presojati glede na delovanje sistema. Ko sistem deluje določen čas, lahko s ukazom show processlist preverite status povezave trenutnega sistema; če najdete veliko povezanih procesov v stanju spanja, to pomeni, da je nastavitev parametrov prevelika in lahko naredite ustrezne prilagoditve za manjše spremembe.


SQL ukaz:



Ta metoda modifikacije je vPo ponovnem zagonu storitve mysql bo ta neveljavna, zato je najbolje, da ti dve lastnosti nastavite v konfiguracijski datoteki mysql.

Spremenite datoteko my.cnf pod Linuxom:




Objavljeno na 6. 09. 2017 11:15:15 |
Moram dobiti strežnik master-slave
 Najemodajalec| Objavljeno na 6. 09. 2017 11:15:49 |
vrchary objavljeno 6. 9. 2017 ob 11:15
Moram dobiti strežnik master-slave

Razlog za konfiguracijo strežnika Konfiguracija je nizka   
 Najemodajalec| Objavljeno na 6. 09. 2017 13:47:56 |
Rešil sem težavo, da je "mysql-bin.000001" zavzel veliko prostora
http://www.itsvse.com/thread-2694-1-1.html
(Vir: Architect)

Po namestitvi MySQL s porti sem po določenem času ugotovil, da je prostor v /var premalo, preveril sem in ugotovil, da datoteke mysql-bin.000001, mysql-bin.000002 in druge zasedajo prostor, torej, za kaj so te datoteke? To je operacijski dnevnik baze podatkov, kot so UPDATE a tabela ali DELETE nekaterih podatkov; tudi če se ukaz ne ujema s podatki, bo ta ukaz shranjen v dnevniku, vključno s časom izvajanja vsakega stavka, ki bo prav tako zabeležen.

To se večinoma izvaja za naslednja dva namena:
1: Obnova podatkov
Če ima vaša baza podatkov težavo in imate varnostno kopijo že prej, lahko pogledate dnevnik, da ugotovite, kateri ukaz je povzročil težavo z vašo bazo in najdete način za obnovitev izgube.
2: Sinhronizacija podatkov med strežniki master-slave
Vse operacije na primarnem strežniku so zabeležene v dnevnik, ki ga lahko podrejeni strežnik uporabi za zagotovitev sinhronizacije obeh.

Samo zapri hlod.


 Najemodajalec| Objavljeno na 9. 10. 2017 14:33:30 |
mysqld je preveč CPU, ki zaseda Windows spodaj



Rešitev: Optimizirajte SQL izjavo
Objavljeno na 30. 12. 2021 23:15:36 |
Podprite jo!!!!!!!!!!!!!!!!
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com