Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 33231|Atbildi: 6

[Avots] MySQL analizē augstu CPU izmantošanu augstas vienlaicīgas situācijās

[Kopēt saiti]
Publicēts 05.09.2017 20:23:59 | | | |


Nesen dažu iemeslu dēļ vietnes apmeklējumu skaits ir strauji palielinājies, un no skaitļa redzams, ka vienlaicīgo savienojumu skaits ir vairāk nekā 1,200

Tā kā servera konfigurācija ir ļoti zema, 1 kodols un 2G atmiņa, un tad vietnei ir ļoti lēna piekļuve, ja ir daudz cilvēku


Mēs izmantojam augšējo komandu, lai pārbaudītu, mysql aizņem daudz CPU un atmiņas, un citi procesi ir php-fpm, kas aizņem CPU un atmiņu, kas nav ļoti augsts

Ja mysql darbojas normāli, tas ir tas, ka daži SQL paziņojumi PHP rada problēmas, kas tiek atklātas, un root lietotājs ievada mysql pārvaldību
mysql -u sakne -p
Ievadiet paroli un pēc tam ievadiet šādu komandu




Izmantojot šo komandu, mēs varam redzēt, ka datu bāze pastāvīgi izpilda dzēšanas operācijas ar nosacījumiem.



pre_k_spider šī tabula ir tabula, kas reģistrē zirnekļa piekļuvi, iespējams, ko izraisījis instalēts spraudnis

Mēs redzam, ka pre_k_spider tabulā ir vairāk nekā 100 000 ierakstu, un vaicājums aizņem 33 sekundes



Izlēmīgi iztukšojiet šo tabulu un pēc tam dodieties uz pārvaldības fonu, lai aizvērtu attiecīgos tabulas spraudņus un atjaunotu to normālā stāvoklī!









Iepriekšējo:Alibaba Cloud Cloud Marketplace verifikācijas koda atpazīšanas pakalpojums
Nākamo:mysql 5.6.21, lai skatītu my.cnf konfigurācijas failu
 Saimnieks| Publicēts 06.09.2017 09:32:56 |


Šodien vietne atkal ir iestrēgusi, un tiek atrasts liels miega skaits

Miega cēloņi:

1 Klienta programma pirms iziešanas neizsauca mysql_close().

2 Klients bija gulējis vairāk nekā wait_timeout vai interactive_timeout sekundes, neizsniedzot serverim nekādus pieprasījumus.

3 Klienta programma pēkšņi beidzās datu pārsūtīšanas vidū

Ja miega procesu skaits tajā pašā periodā ir pārāk liels un kopējais savienojumu skaits citos stāvokļos pārsniedz max_connection vērtību, tad MySQL vairs nevar apstrādāt nekādus pieprasījumus, izņemot saknes lietotāju, nevar izveidot savienojumu ar jebkuru pieprasījumu vai uzkaras tieši

Risinājums:

1. Pirmkārt, pārbaudiet, vai jūsu programma izmanto pconnect metodi, un, otrkārt, pārbaudiet, vai mysql_close () tiek izsaukts laikā pirms lapas izpildes. Mēģiniet neizmantot pconnect metodi, t.i. izmantojiet mysql_connect. Kad programma tiek izpildīta, mysql_close ir skaidri jāizsauc

2. Pievienojiet wait_timeout un interactive_timeout my.cnf, iestatiet vērtību mazāku, pēc noklusējuma wait_timeout vērtība ir 8 stundas, to var mainīt uz 1 stundu vai pusstundu. Tādā veidā mysql ātrāk nogalinās mirušos savienojumus. Neļaujiet kopējam savienojumu skaitam pārsniegt max_connection vērtību.

wait_timeout pārāk liels izraisīs lielu skaitu SLEEP procesu MySQL laikā, samazinot sistēmas veiktspēju, bet, ja iestatījumi ir pārāk mazi, var rasties tādas problēmas kā "MySQL ir aizgājis"

Iestatiet max_connection vērtību uz augstāku vērtību, bet tas acīmredzami nav piemēroti, jo vairāk savienojumu jums ir, jo lielāku stresu tas rada jūsu serverim. Patiesībā šie savienojumi ir lieki, un to nogalināšana pēc iespējas ātrāk ir labākā politika.

3. Soli pa solim analizējiet sistēmas SQL vaicājumu, atrodiet pārāk lēnu SQL un optimizējiet to



1)interactive_timeout:
Parametra nozīme: sekunžu skaits, kad serveris gaida aktivitāti pirms interaktīvā savienojuma izslēgšanas. Interaktīvs klients tiek definēts kā klients, kas izmanto CLIENT_INTERACTIVE opciju mysql_real_connect().
Parametra noklusējums: 28800 sekundes (8 stundas)

(2)wait_timeout:
Parametra nozīme: sekunžu skaits, kad serveris gaida darbību pirms neinteraktīvā savienojuma slēgšanas.
Sākot pavedienu, sesijas wait_timeout vērtība tiek inicializēta, pamatojoties uz globālo wait_timeout vai globālo interactive_timeout vērtību atkarībā no klienta tipa (definēts CLIENT_INTERACTIVE mysql_real_connect()) savienojuma opcijām).
Parametra noklusējums: 28800 sekundes (8 stundas)

Ir augšējā robeža maksimālajam savienojumu skaitam, ko MySQL Server var atbalstīt, jo katrs savienojums ir izveidots un patērē atmiņu, tāpēc mēs sagaidām, ka klienti atvienos un atbrīvos aizņemto atmiņu pēc savienojuma izveides ar MySQL Server, lai veiktu atbilstošo darbību. Ja jūsu MySQL Server ir liels skaits dīkstāves savienojumu, tie ne tikai veltīgi patērēs atmiņu, bet, ja savienojumi turpinās uzkrāties un atvērties, tie galu galā sasniegs maksimālo savienojumu skaitu MySQL Server, kas ziņos par kļūdu "pārāk daudz savienojumu". wait_timeout vērtības noteikšana jāvērtē atbilstoši sistēmas darbībai. Pēc tam, kad sistēma ir darbojusies kādu laiku, varat pārbaudīt pašreizējās sistēmas savienojuma statusu, izmantojot komandu rādīt processlist, ja miega stāvoklī atrodat lielu skaitu saistīto procesu, tas nozīmē, ka parametru iestatījums ir pārāk liels, un jūs varat veikt atbilstošas korekcijas, lai veiktu mazākas korekcijas.


SQL komanda:



Šī modifikācijas metode irPēc mysql pakalpojuma restartēšanas tas būs nederīgs, tāpēc vislabāk ir konfigurēt šos divus rekvizītus MySQL konfigurācijas failā.

Modificējiet failu my.cnf operētājsistēmā Linux:




Publicēts 06.09.2017 11:15:15 |
Man ir jāiegūst master-slave serveris
 Saimnieks| Publicēts 06.09.2017 11:15:49 |
vrchary publicēts 2017-9-6 11:15
Man ir jāiegūst master-slave serveris

Servera konfigurācijas iemesls Konfigurācija ir zema   
 Saimnieks| Publicēts 06.09.2017 13:47:56 |
Atrisināts jautājums par "mysql-bin.000001", kas aizņem lielu vietu
http://www.itsvse.com/thread-2694-1-1.html
(Avots: Arhitekts)

Pēc MySQL instalēšanas ar portiem pēc kāda laika es atklāju, ka /var vieta ir nepietiekama, es pārbaudīju un atklāju, ka mysql-bin.000001, mysql-bin.000002 un citi faili aizņem vietu, tātad kādi ir šie faili? Tas ir datu bāzes operāciju žurnāls, piemēram, UPDATE tabula vai DELETE daži dati, pat ja paziņojums neatbilst datiem, šī komanda tiks saglabāta žurnālfailā, ieskaitot katra paziņojuma izpildes laiku, kas arī tiks ierakstīts.

Tas galvenokārt tiek darīts šādiem diviem mērķiem:
1: Datu atgūšana
Ja datu bāzē ir problēma un jums iepriekš ir dublējums, varat apskatīt žurnālfailu, lai uzzinātu, kura komanda izraisīja datu bāzes problēmu, un atrastu veidu, kā atgūt zaudējumus.
2: Sinhronizējiet datus starp master-slave serveriem
Visas darbības primārajā serverī tiek ierakstītas žurnālā, ko vergu serveris var izmantot, lai nodrošinātu abu sinhronizāciju.

Vienkārši aizveriet žurnālu


 Saimnieks| Publicēts 09.10.2017 14:33:30 |
mysqld ir pārāk CPU, kas aizņem Windows zemāk



Risinājums: SQL priekšraksta optimizēšana
Publicēts 30.12.2021 23:15:36 |
Atbalstiet to!!!!!!!!!!!!!!!!
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com