Mysql
 sql >> Datenbank >  >> RDS >> Mysql

EC2 Amazon Linux AMI MySQL-CPU bei 62 % im Leerlauf?

Das Einzige, woran ich denken kann, ist zu überprüfen, was mysqld wirklich tut, indem ich strace als Benutzer root verwende:

 strace -p 2959

Normalerweise sollte strace sofort blockieren und Ihnen einen Aufruf von select() anzeigen, da mysqld auf Verbindungen warten sollte.

Der Aufruf sollte in etwa so lauten:

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

Besonders wichtig ist der vierte Parameter, der ein Timeout-Timeval ist. Wenn NULL, bedeutet dies, dass mysqld schläft, bis sich jemand verbindet. Wenn nicht NULL, bedeutet dies, dass mysqld die angegebene Zeit abwartet und dann einige Wartungsarbeiten durchführt. Ein sehr kleiner Zeitwert könnte den CPU-Verbrauch erklären.

Ich glaube, dass MySQL immer ein NULL (unendliches) Timeout verwendet. Es macht Sinn und so verhalten sich die Mysqlds, die ich jetzt erreichen kann.

Es kann jedoch einige Probleme bei der Verbindungsbehandlung geben, die verhindern, dass select wieder in den Ruhezustand versetzt wird. Prüfen Sie, ob dieses Verhalten auftritt, sobald mysqld startet oder nachdem sich jemand verbunden hat.