Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 33231|Vastaus: 6

[Lähde] MySQL analysoi korkeaa suorittimen käyttöä korkeassa samanaikaisuudessa tilanteissa

[Kopioi linkki]
Julkaistu 5.9.2017 20.23.59 | | | |


Viime aikoina verkkosivujen käyntien määrä on kasvanut jyrkästi, ja luvusta näkyy, että samanaikaisten yhteyksien määrä on yli 1 200

Koska palvelimen kokoonpano on hyvin pieni, 1 ydin ja 2G-muisti, ja verkkosivustolle pääsee hyvin hitaasti, kun ihmisiä on paljon


Käytämme ylintä komentoa tarkistamiseen, mysql vie paljon prosessoria ja muistia, ja muut prosessit vievät php-fpm prosessoria ja muistia, mikä ei ole kovin korkea

Jos mysql toimii normaalisti, jotkut SQL-lauseet PHP:ssä aiheuttavat ongelmia, ja root-käyttäjä siirtyy mysql-hallintaan
mysql -u root -p
Syötä salasana ja sitten seuraava komento




Tämän komennon avulla näemme, että tietokanta suorittaa jatkuvasti poistotoimintoja where-ehdoilla.



pre_k_spider tämä taulukko on taulukko, joka tallentaa hämähäkkien käyttöot, jotka ilmeisesti johtuvat asennuksesta lisäosasta

Näemme, että pre_k_spider taulukossa on yli 100 000 tietuetta, ja kysely kestää 33 sekuntia



Tyhjennä tämä taulukko päättäväisesti ja siirry sitten hallintataustaan sulkeaksesi taulukon relevantit lisäosat ja palauttaaksesi sen normaaliksi!









Edellinen:Alibaba Cloud Cloud Marketplace -varmennuskoodin tunnistuspalvelu
Seuraava:MySQL 5.6.21 nähdäksesi my.cnf-konfiguraatiotiedoston
 Vuokraisäntä| Julkaistu 6.9.2017 9.32.56 |


Tänään sivusto on taas jumissa, ja siellä on paljon unta

Unen syyt:

1 Asiakasohjelma ei kutsunut mysql_close() ennen poistumista.

2 Asiakas oli nukkunut yli wait_timeout tai interactive_timeout sekuntia ilman pyyntöjä palvelimelle.

3 Asiakasohjelma päättyi äkillisesti kesken tiedonsiirron

Jos saman ajanjakson lepoprosessien määrä on liian suuri ja muiden tilojen yhteyksien kokonaismäärä ylittää max_connection-arvon, MySQL ei enää voi käsitellä pyyntöjä paitsi juurikäyttäjä, ei voi muodostaa yhteyttä mihinkään pyyntöön tai jumittuu suoraan

Ratkaisu:

1. Tarkista ensin, käyttääkö ohjelmasi pconnect-menetelmää, ja toiseksi tarkista, kutsutaanko mysql_close() ajoissa ennen sivun suorittamista. Yritä olla käyttämättä plink-menetelmää, eli käytä mysql_connect. Kun ohjelma suoritetaan, mysql_close tulisi kutsua eksplisiittisesti

2. Lisää wait_timeout ja interactive_timeout my.cnf:ään, aseta arvo pienemmäksi, oletuksena wait_timeout arvo on 8 tuntia, voit muuttaa sen 1 tunniksi tai puoleksi tunniksi. Näin mysql tappaa kuolleet yhteydet nopeammin. Estä yhteyksien kokonaismäärän ylittämästä max_connection arvoa.

wait_timeout liian suuri johtaa siihen, että suuri määrä SLEEP-prosesseja MySQL:ssä vapautuu ajoissa, mikä laskee järjestelmän suorituskykyä, mutta jos asetukset ovat liian pieniä, saatat kohdata ongelmia kuten "MySQL on kadonnut"

Aseta max_connection arvo korkeammaksi, mutta tämä ei tietenkään ole sopivaa, mitä enemmän yhteyksiä sinulla on, sitä enemmän se aiheuttaa stressiä palvelimellesi. Itse asiassa nuo yhteydet ovat tarpeettomia, ja niiden lopettaminen mahdollisimman pian on paras käytäntö.

3. Analysoi järjestelmän SQL-kysely vaihe vaiheelta, etsi liian hidas SQL ja optimoi se



1)interactive_timeout:
Parametrin merkitys: Sekuntien määrä, jonka palvelin odottaa toimintaa ennen interaktiivisen yhteyden sulkemista. Interaktiivinen asiakas määritellään asiakkaaksi, joka käyttää CLIENT_INTERACTIVE vaihtoehtoa mysql_real_connect().
Parametrin oletus: 28800 sekuntia (8 tuntia)

(2)wait_timeout:
Parametrin merkitys: Sekuntien määrä, jonka palvelin odottaa toimintaa ennen ei-interaktiivisen yhteyden sulkemista.
Kun säie alkaa, session wait_timeout arvo alustetaan globaalin wait_timeout- tai globaalin interactive_timeout-arvon perusteella, riippuen asiakastyypistä (määritelty CLIENT_INTERACTIVE mysql_real_connect()) yhteysvaihtoehdoista).
Parametrin oletus: 28800 sekuntia (8 tuntia)

MySQL Serverin tukemien yhteyksien enimmäismäärälle on yläraja, koska jokainen yhteys on muodostettu ja kuluttaa muistia, joten odotamme asiakkaiden katkaisevan yhteyden ja vapauttavan varatun muistin MySQL Serveriin yhdistämisen jälkeen vastaavaa operaatiota varten. Jos MySQL Serverissäsi on suuri määrä käyttämättömiä yhteyksiä, ne eivät ainoastaan kuluta muistia turhaan, vaan jos yhteydet jatkuvat kertyvät ja avautuvat, ne lopulta saavuttavat MySQL Serverin maksimimäärän yhteyksiä, mikä ilmoittaa virheen 'liikaa yhteyksiä'. wait_timeout arvonasetus tulisi arvioida järjestelmän toiminnan perusteella. Kun järjestelmä on ollut käynnissä jonkin aikaa, voit tarkistaa nykyisen järjestelmän yhteyden tilan näytä-prosessilista-komennolla; jos löydät suuren määrän yhdistettyjä prosesseja lepotilassa, se tarkoittaa, että parametrien asetus on liian suuri, ja voit tehdä sopivia säätöjä pienemmille säädöille.


SQL-komento:



Tämä muokkausmenetelmä onMysql-palvelun uudelleenkäynnistyksen jälkeen se on virheellinen, joten on parasta konfiguroida nämä kaksi ominaisuutta mySQL-konfiguraatiotiedostossa.

Muokkaa my.cnf-tiedostoa Linuxissa:




Julkaistu 6.9.2017 11.15.15 |
Minun täytyy hankkia master-slave-palvelin
 Vuokraisäntä| Julkaistu 6.9.2017 11.15.49 |
vrchary julkaisi 6.9.2017 klo 11:15
Minun täytyy hankkia master-slave-palvelin

Palvelimen konfiguraatio Asetus on matala   
 Vuokraisäntä| Julkaistu 6.9.2017 13.47.56 |
Ratkaistiin ongelma "mysql-bin.000001", joka vie paljon tilaa
http://www.itsvse.com/thread-2694-1-1.html
(Lähde: Arkkitehti)

Kun asensin MySQL:n porteilla, huomasin jonkin ajan kuluttua, että /var-tila oli riittämätön, tarkistin ja huomasin, että mysql-bin.000001, mysql-bin.000002 ja muut tiedostot veivät tilaa, joten mihin nämä tiedostot ovat? Tämä on tietokannan operaatiolokki, kuten PÄIVITÄ taulu tai DELETE jokin data; vaikka lauseke ei vastaisi dataa, tämä komento tallennetaan lokitiedostoon, mukaan lukien kunkin lauseen suoritusaika, joka myös tallennetaan.

Tämä tehdään pääasiassa seuraaviin kahteen tarkoitukseen:
1: Tietojen palautus
Jos tietokannassasi on ongelma ja sinulla on varmuuskopio aiemmin, voit katsoa lokitiedostosta selvittääksesi, mikä komento aiheutti tietokanta-ongelman, ja löytää tavan korjata menetys.
2: Synkronoi data master-slave-palvelimien välillä
Kaikki ensisijaisella palvelimella tehdyt toiminnot tallennetaan lokkiin, jota orjapalvelin voi käyttää varmistaakseen molempien synkronoinnin.

Sulje vain tukki


 Vuokraisäntä| Julkaistu 9.10.2017 14.33.30 |
mysqld on liian prosessori ja vie Windowsin alla



Ratkaisu: Optimoi SQL-lause
Julkaistu 30.12.2021 23.15.36 |
Tue sitä!!!!!!!!!!!!!!!!
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com