MySQL high CPU usage [zamknięty]

zamknięte. to pytanie jest off-topic . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Update the question so it ' s on-topic dla przepełnienia stosu.

Zamknięte 8 lat temu .

Popraw to pytanie [5]}ostatnio mój procesor serwerowy idzie bardzo wysoko.

Średnie obciążenie procesora 13.91 (1 min) 11.72 (5 min) 8.01 (15 min), a moja strona miała tylko niewielki wzrost ruchu.

Po uruchomieniu top command, widziałem, że MySQL używa 160% CPU!

Ostatnio optymalizowałem tabele i przełączyłem się na stałe połączenia. Czy to może powodować, że MySQL używa dużych ilości procesora?

Author: Juddling, 2009-08-15

3 answers

Najpierw powiedziałbym, że prawdopodobnie chcesz wyłączyć trwałe połączenia, ponieważ prawie zawsze robią więcej szkody niż pożytku.

Po drugie, chciałbym powiedzieć, że chcesz dokładnie sprawdzić użytkowników MySQL, aby upewnić się, że nie jest możliwe, aby ktokolwiek łączył się ze zdalnym serwerem. Jest to również ważna sprawa bezpieczeństwa do sprawdzenia.

Po Trzecie powiedziałbym, że chcesz włączyć MySQL Slow Query Log, aby mieć oko na wszelkie zapytania, które zajmują dużo czasu, i użyć tego, aby upewnić się, że nie masz żadnych zapytań blokowanie tabel kluczy zbyt długo.

Inne rzeczy, które możesz sprawdzić, to uruchomienie następującego zapytania, gdy obciążenie CPU jest wysokie:

SHOW PROCESSLIST;

To pokaże Ci wszystkie zapytania, które są aktualnie uruchomione lub w kolejce do uruchomienia, co to jest zapytanie i co robi (to polecenie obetnie zapytanie, jeśli jest zbyt długie, możesz użyć SHOW FULL PROCESSLIST, aby zobaczyć pełny tekst zapytania).

Będziesz również chciał mieć oko na rzeczy takie jak bufor rozmiary, tabela cache, Cache zapytań i innodb_buffer_pool_size (Jeśli używasz tabel innodb), ponieważ wszystkie te alokacje pamięci mogą mieć wpływ na wydajność zapytań, co może spowodować, że MySQL pochłonie CPU.

Prawdopodobnie będziesz też chciał przeczytać poniższe informacje, ponieważ zawierają one dobre informacje.

Bardzo dobrym pomysłem jest również użycie profiler. Coś, co możesz włączyć, kiedy chcesz, pokaże ci, jakie zapytania uruchomiona jest Twoja aplikacja, jeśli są zduplikowane zapytania, jak długo trwają, itp, itp. Przykładem czegoś takiego jest jeden, nad którym pracowałem o nazwie PHP Profiler , ale jest ich wiele. Jeśli używasz oprogramowania, takiego jak Drupal, Joomla lub WordPress, będziesz chciał popytać w społeczności, ponieważ prawdopodobnie dostępne są dla nich moduły, które pozwalają ci to uzyskać informacje bez konieczności ręcznej integracji czegokolwiek.
 272
Author: Steven Surowiec,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-15 16:35:46

Ponieważ jest to najlepszy post, jeśli wygooglujesz dla MySQL wysokiego wykorzystania procesora lub obciążenia, dodam dodatkową odpowiedź:

W dniu 1 lipca 2012 roku, sekunda przestępna została dodana do obecnego czasu UTC, aby zrekompensować spowolnienie obrotu Ziemi z powodu pływów. Podczas uruchamiania ntp (lub ntpd) ta sekunda została dodana do zegara komputera / serwera. MySQLd wydaje się nie lubić tej dodatkowej sekundy na niektórych systemach operacyjnych i zapewnia duże obciążenie procesora. Szybka poprawka to (jako root):

$ /etc/init.d/ntpd stop
$ date -s "`date`"
$ /etc/init.d/ntpd start
 168
Author: RedPixel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-03 09:47:49

Jeśli ten serwer jest widoczny dla świata zewnętrznego, warto sprawdzić, czy ma wiele żądań połączenia ze świata zewnętrznego (np. osób próbujących się do niego włamać)

 34
Author: Rowland Shaw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-15 16:22:16