Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 33231|Odpoveď: 6

[Zdroj] MySQL analyzuje vysoké využitie CPU v situáciách s vysokou súbežnosťou

[Kopírovať odkaz]
Zverejnené 5. 9. 2017 20:23:59 | | | |


V poslednej dobe sa z rôznych dôvodov počet návštev webu prudko zvýšil a z čísla je vidieť, že počet súbežných pripojení presahuje 1 200

Pretože konfigurácia servera je veľmi nízka, 1 jadro a 2G pamäť, a potom je prístup na webstránku veľmi pomalý, keď je tam veľa ľudí


Používame horný príkaz na kontrolu, mysql zaberá veľa CPU a pamäte, a iné procesy sú php-fpm, ktoré zaberajú CPU a pamäť, čo nie je veľmi vysoké

Ak mysql beží normálne, je to tak, že niektoré SQL príkazy v PHP spôsobujú odhalenie problémov a root používateľ zadá správu mysql
mysql -u root -p
Zadajte heslo a potom nasledujúci príkaz




Týmto príkazom vidíme, že databáza neustále vykonáva operácie na vymazanie s podmienkami where.



pre_k_spider táto tabuľka je tabuľka, ktorá zaznamenáva prístupy pavúkov, pravdepodobne spôsobené nainštalovaným pluginom

Vidíme, že pre_k_spider tabuľka obsahuje viac ako 100 000 záznamov a dotaz trvá 33 sekúnd



Rozhodne vyprázdnite túto tabuľku a potom prejdite do správy pozadia, zatvorte príslušné pluginy tabuľky a obnovte ju do normálu!









Predchádzajúci:Služba rozpoznávania overovacieho kódu Alibaba Cloud Cloud Marketplace
Budúci:MySQL 5.6.21 na zobrazenie konfiguračného súboru my.cnf
 Prenajímateľ| Zverejnené 6. 9. 2017 9:32:56 |


Dnes je stránka opäť zaseknutá a nachádza sa tam veľké množstvo spánku

Príčiny spánku:

1 Klientský program nezavolal mysql_close() pred ukončením.

2 Klient spal viac ako wait_timeout alebo interactive_timeout sekúnd bez toho, aby serveru poslal akékoľvek požiadavky.

3 Klientský program skončil náhle uprostred prenosu dát

Ak je počet spánkových procesov v rovnakom období príliš vysoký a celkový počet spojení v iných stavoch prevyšuje hodnotu max_connection, MySQL už nemôže spracovávať žiadne požiadavky okrem root používateľa, nemôže nadviazať spojenie s žiadnou požiadavkou alebo sa zasekne priamo

Riešenie:

1. Najprv skontrolujte, či váš program používa metódu pconnect, a po druhé, skontrolujte, či je mysql_close() volaný včas pred spustením stránky. Snažte sa nepoužívať metódu pconnect, teda používajte mysql_connect. Keď sa program spustí, mysql_close by mal byť explicitne vyvolaný

2. Pridajte wait_timeout a interactive_timeout do my.cnf, nastavte hodnotu menšiu, predvolene je hodnota wait_timeout 8 hodín, môžete ju zmeniť na 1 hodinu alebo pol hodiny. Takto MySQL rýchlejšie zničí mŕtve spojenia. Zabrániť tomu, aby celkový počet pripojení prekročil hodnotu max_connection.

wait_timeout príliš veľké spowoduje, že veľké množstvo SLEEP procesov v MySQL bude včas uvoľnených, čo zníži výkon systému, ale ak sú nastavenia príliš malé, môžete naraziť na problémy ako "MySQL zmizol"

Nastavte hodnotu max_connection na vyššiu hodnotu, ale to samozrejme nie je vhodné, čím viac spojení máte, tým viac to zaťažuje váš server. V skutočnosti sú tieto spojenia zbytočné a ich zrušenie čo najskôr je najlepšia politika.

3. Krok za krokom analyzovať SQL dotaz systému, nájsť príliš pomalé SQL a optimalizovať ho



1)interactive_timeout:
Význam parametra: Počet sekúnd, počas ktorých server čaká na aktivitu pred vypnutím interaktívneho spojenia. Interaktívny klient je definovaný ako klient, ktorý používa CLIENT_INTERACTIVE možnosť v mysql_real_connect().
Predvolený parameter parametra: 28800 sekúnd (8 hodín)

(2)wait_timeout:
Význam parametra: Počet sekúnd, počas ktorých server čaká na aktivitu pred uzavretím neinteraktívneho spojenia.
Keď vlákno začne, hodnota relácie wait_timeout sa inicializuje na základe globálnej hodnoty wait_timeout alebo globálneho interactive_timeout, v závislosti od typu klienta (definovaného CLIENT_INTERACTIVE možnostiach pripojenia mysql_real_connect()).
Predvolený parameter parametra: 28800 sekúnd (8 hodín)

Existuje horný limit maximálneho počtu pripojení, ktoré MySQL Server dokáže podporiť, pretože každé spojenie je nadviazané a spotrebúva pamäť, takže očakávame, že klienti sa po pripojení k MySQL Serveru odpojí a uvoľnia obsadenú pamäť na spracovanie zodpovedajúcej operácie. Ak má váš MySQL Server veľké množstvo nečinných pripojení, nielenže budú zbytočne spotrebovávať pamäť, ale ak sa pripojenia stále hromadia a otvárajú, nakoniec dosiahnu maximálny počet pripojení v MySQL Serveri, ktorý zobrazí chybu 'príliš veľa spojení'. Nastavenie hodnoty wait_timeout by sa malo posudzovať podľa fungovania systému. Po určitom čase spustenia systému môžete skontrolovať stav pripojenia aktuálneho systému pomocou príkazu show processlist; ak nájdete veľké množstvo pripojených procesov v spánku, znamená to, že nastavenie parametra je príliš veľké a môžete vykonať vhodné úpravy na menšie úpravy.


SQL príkaz:



Táto modifikačná metóda je vPo reštarte služby mysql bude neplatná, preto je najlepšie nastaviť tieto dve vlastnosti v konfiguračnom súbore MySQL.

Upravte súbor my.cnf v Linuxe:




Zverejnené 6. 9. 2017 11:15:15 |
Musím si zaobstarať master-slave server
 Prenajímateľ| Zverejnené 6. 9. 2017 11:15:49 |
vrchary zverejnené 6.9.2017 o 11:15
Musím si zaobstarať master-slave server

Dôvod konfigurácie servera Konfigurácia je nízka   
 Prenajímateľ| Zverejnené 6. 9. 2017 13:47:56 |
Vyriešilo to problém, že "mysql-bin.000001" zaberal veľké množstvo miesta
http://www.itsvse.com/thread-2694-1-1.html
(Zdroj: Architect)

Po inštalácii MySQL s portmi som po čase zistil, že priestor v /var je nedostatočný, skontroloval som a zistil som, že súbory mysql-bin.000001, mysql-bin.000002 a ďalšie zaberajú miesto, tak na čo sú tieto súbory? Toto je operačný log databázy, napríklad UPDATE a table alebo DELETE niektoré dáta, aj keď príkaz nezodpovedá dátam, tento príkaz bude uložený v logovom súbore vrátane času vykonania každého príkazu, ktorý sa tiež zaznamená.

Toto sa robí hlavne na tieto dva účely:
1: Obnova dát
Ak má vaša databáza problém a máte zálohu predtým, môžete sa pozrieť do log súboru, aby ste zistili, ktorý príkaz spôsobil váš problém s databázou a nájsť spôsob, ako stratu obnoviť.
2: Synchronizácia dát medzi master-slave servermi
Všetky operácie na primárnom serveri sa zaznamenávajú v logu, ktorý môže podriadený server použiť na zabezpečenie synchronizácie oboch.

Len zatvor kmeň


 Prenajímateľ| Zverejnené 9. 10. 2017 14:33:30 |
mysqld je príliš zaťažujúci CPU, zaberá Windows nižšie



Riešenie: Optimalizujte SQL príkaz
Zverejnené 30. 12. 2021 23:15:36 |
Podporte ju!!!!!!!!!!!!!!!!
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com