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.