Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 33231|Odpověď: 6

[Zdroj] MySQL analyzuje vysoké využití CPU v situacích s vysokou souběžností

[Kopírovat odkaz]
Zveřejněno 05.09.2017 20:23:59 | | | |


V poslední době z různých důvodů prudce vzrostl počet návštěv webových stránek a z čísla je vidět, že počet souběžných připojení přesahuje 1 200

Protože konfigurace serveru je velmi nízká, 1 jádro a 2G paměť, a pak je přístup na web velmi pomalý, když je tam hodně lidí


Používáme horní příkaz k kontrole, mysql zabírá hodně CPU a paměti, a další procesy jsou php-fpm, které zabírají CPU a paměť, což není moc vysoké

Pokud mysql běží normálně, je to tak, že některé SQL příkazy v PHP způsobují odhalení problémů a root uživatel zadá správu mysql
mysql -u kořen -p
Zadejte heslo a poté následující příkaz




Tímto příkazem vidíme, že databáze neustále provádí mazací operace s podmínkami where.



pre_k_spider této tabulce je tabulka, která zaznamenává pavoučí přístupy, pravděpodobně způsobené nainstalovaným pluginem

Vidíme, že pre_k_spider tabulka obsahuje více než 100 000 záznamů a dotaz trvá 33 sekund



Rozhodně tuto tabulku vyprázdněte, pak přejděte do pozadí správy, abyste zavřeli příslušné pluginy tabulky a obnovili ji do normálu!









Předchozí:Služba rozpoznávání ověřovacího kódu Alibaba Cloud Cloud Marketplace
Další:MySQL 5.6.21 pro zobrazení konfiguračního souboru my.cnf
 Pronajímatel| Zveřejněno 06.09.2017 9:32:56 |


Dnes je web opět zaseknutý a najde se tam velké množství spánku

Příčiny spánku:

1 Klientský program nezavolal mysql_close() před ukončením.

2 Klient spal více než wait_timeout nebo interactive_timeout sekund, aniž by serveru vydal jakékoli požadavky.

3 Klientský program náhle skončil uprostřed přenosu dat

Pokud je počet spánkových procesů ve stejném období příliš vysoký a celkový počet spojení v jiných stavech překročí hodnotu max_connection, MySQL již nemůže zpracovávat žádné požadavky kromě root uživatele, nemůže navázat spojení s žádným požadavkem nebo se zasekne přímo

Řešení:

1. Nejprve zkontrolujte, zda váš program používá metodu pconnect, a za druhé, zda je mysql_close() volán včas před vykonáním stránky. Snažte se nepoužívat metodu pconnect, tedy používejte mysql_connect. Když je program vykonán, mysql_close by měl být explicitně vyvolán

2. Přidejte wait_timeout a interactive_timeout do my.cnf, nastavte hodnotu menší, výchozí hodnota wait_timeout je 8 hodin, můžete ji změnit na 1 hodinu nebo půl hodiny. Tímto způsobem mysql rychleji ukončí mrtvá spojení. Zabránit tomu, aby celkový počet spojení překročil hodnotu max_connection.

wait_timeout příliš velké množství způsobí, že se v MySQL včas uvolní velké množství procesů SLEEP, což sníží výkon systému, ale pokud jsou nastavení příliš malá, můžete narazit na problémy jako "MySQL zmizel"

Nastavte hodnotu max_connection na vyšší hodnotu, ale to samozřejmě není vhodné, čím více připojení máte, tím větší stres to klade na váš server. Ve skutečnosti jsou tyto vazby zbytečné a nejlepší je co nejdříve je zlikvidovat.

3. Krok za krokem analyzovat SQL dotaz systému, najít příliš pomalé SQL a optimalizovat ho



1)interactive_timeout:
Význam parametru: Počet sekund, které server čeká na aktivitu, než vypne interaktivní připojení. Interaktivní klient je definován jako klient, který používá CLIENT_INTERACTIVE možnost v mysql_real_connect().
Výchozí parametr: 28800 sekund (8 hodin)

(2)wait_timeout:
Význam parametru: Počet sekund, které server čeká na aktivitu, než uzavře neinteraktivní spojení.
Když vlákno začne, hodnota wait_timeout relace je inicializována na základě globální hodnoty wait_timeout nebo globální interactive_timeout, v závislosti na typu klienta (definovaném CLIENT_INTERACTIVE možnostech spojení mysql_real_connect()).
Výchozí parametr: 28800 sekund (8 hodin)

Existuje horní limit maximálního počtu spojení, které MySQL Server může podporovat, protože každé spojení je navázáno a spotřebovává paměť, takže očekáváme, že klienti po připojení k MySQL Serveru odpojí a uvolní obsazenou paměť pro zpracování odpovídající operace. Pokud má váš MySQL Server velké množství nečinných připojení, nejenže budou zbytečně spotřebovávat paměť, ale pokud se spojení stále hromadí a otevírají, nakonec dosáhnou maximálního počtu spojení v MySQL Serveru, který hlásí chybu 'příliš mnoho připojení'. Nastavení hodnoty wait_timeout by mělo být posuzováno podle fungování systému. Po určité době běhu systému můžete zkontrolovat stav připojení aktuálního systému příkazem show processlist, pokud najdete velké množství propojených procesů ve stavu spánku, znamená to, že nastavení parametrů je příliš velké a můžete provést vhodné úpravy pro menší úpravy.


SQL příkaz:



Tato metoda úpravy je vPo restartu služby mysql bude neplatná, proto je nejlepší tyto dvě vlastnosti nastavit v konfiguračním souboru MySQL.

Upravte soubor my.cnf v Linuxu:




Zveřejněno 06.09.2017 11:15:15 |
Musím si pořídit master-slave server
 Pronajímatel| Zveřejněno 06.09.2017 11:15:49 |
vrchary zveřejněno 6. 9. 2017 11:15
Musím si pořídit master-slave server

Důvod konfigurace serveru Konfigurace je nízká   
 Pronajímatel| Zveřejněno 06.09.2017 13:47:56 |
Vyřešilo to problém, že "mysql-bin.000001" zabírá velké množství místa
http://www.itsvse.com/thread-2694-1-1.html
(Zdroj: Architect)

Po instalaci MySQL s porty jsem po nějaké době zjistil, že místo v /var je nedostatečné, zkontroloval jsem a zjistil jsem, že soubory mysql-bin.000001, mysql-bin.000002 a další zabírají místo, tak k čemu tyto soubory jsou? Jedná se o operační záznam databáze, například UPDATE a table nebo DELETE (DELETE (DELETE některá data), i když příkaz neodpovídá datům, tento příkaz bude uložen v logovacím souboru, včetně doby provedení každého příkazu, která bude také zaznamenána.

To se dělá hlavně za těmito dvěma účely:
1: Obnova dat
Pokud má vaše databáze problém a máte zálohu dříve, můžete se podívat do logu, abyste zjistili, který příkaz způsobil váš problém s databází, a najít způsob, jak ztrátu obnovit.
2: Synchronizace dat mezi master-slave servery
Všechny operace na primárním serveru jsou zaznamenávány do logu, který může slave server použít k zajištění synchronizace obou serverů.

Prostě zavři kládu


 Pronajímatel| Zveřejněno 09.10.2017 14:33:30 |
mysqld je příliš náročný na CPU, zabírá Windows dole



Řešení: Optimalizovat SQL příkaz
Zveřejněno 30.12.2021 23:15:36 |
Podpořte ho!!!!!!!!!!!!!!!!
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com