Š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:
|