Mysql
 sql >> Baza danych >  >> RDS >> Mysql

EC2 Amazon Linux AMI MySQL CPU @ 62% w stanie bezczynności?

Jedyne, o czym mogę pomyśleć, to sprawdzenie, co mysqld naprawdę robi, używając strace, jako użytkownik root:

 strace -p 2959

Normalnie strace powinno natychmiast zablokować się i pokazać wywołanie select(), ponieważ mysqld powinien czekać na połączenia.

Wywołanie powinno wyglądać mniej więcej tak:

 select(SOCKETNO, [OTHER_FDs], NULL, NULL, NULL)

szczególnie ważny jest czwarty parametr, czyli limit czasu. Jeśli NULL, oznacza to, że mysqld będzie spał, dopóki ktoś się nie połączy. Jeśli nie jest NULL, oznacza to, że mysqld będzie czekał przez określony czas, a następnie wykona pewne prace konserwacyjne. Bardzo krótki czas może wyjaśniać zużycie procesora.

Uważam, że MySQL zawsze stosuje limit czasu NULL (nieskończony). To ma sens i tak zachowują się mysqlds, do których jestem teraz w stanie dotrzeć.

Jednak mogą wystąpić pewne problemy z obsługą połączenia, które uniemożliwiają ponowne uśpienie select. Sprawdź, czy to zachowanie pojawia się zaraz po uruchomieniu mysqld lub po połączeniu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL JSON_OBJECT() z niektórymi polami już zawierającymi ciąg JSON

  2. Usuwanie z wielu tabel z obcymi ograniczeniami

  3. Jak korzystać z uwierzytelniania HTTP z PHP, a następnie uruchomić wprowadzone dane w bazie danych?

  4. Błąd migracji w django 2; AttributeError:obiekt „str” nie ma atrybutu „decode”

  5. Funkcja MAX, w której klauzula mysql