MySQL server draait door
Een Proliant ML server staat lawaaierig te blazen, alsof hij het heel warm heeft. Hij werkt nog normaal, maar een blik op het processorgebruik toont dat één van de twee processoren aan 100% zit te werken. De tweede processor heeft percentages die meegaan met het starten van taken op de server, vandaar dat het niet echt direkt merkbaar is. Maar wat veroorzaakt die drukte?
De processentabel verraad dat MySQL draait aan 50% continue; wat overeen kan komen met 1 van de 2 processoren. De programma’s op de server die MySQL gebruiken draaien nog en reageren normaal (binnen lage belasting op het moment weliswaar).
Inloggen op de server.
Inloggen in MySQL: mysql -u root -p
In de mysql prompt kan je dan weer naar de processen kijken:
mysql> SHOW PROCESSLIST;
Dat geeft een typische mysql-tabel met een aantal kolommen: Id, user, Host, db, Command, Time, State en Info.
De lijnen bestaan uit de processen.
Ze hebben een nummer, net als de processen in Linux.
Je kan ze ook “killen” op dezefde manier.
Zoek het proces dat het probleem vormt en overweeg of het kwaad kan om het te verwijderen.
In mijn geval was het een sql-statement dat ik uitgeprobeerd had in phpMyAdmin, op zoek naar gegevens de dag voordien; en er zat waarschijnlijk een fout in de query waardoor die eeuwig duurt en het antwoord gigantisch groot wordt. Kill dus!
mysql> KILL 3357;
Query OK, 0 rows affected (0.04 sec)
Daarna is het process verdwenen uit de tabel.
+------+--------+-----------+--------+---------+-------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+------+--------+-----------+--------+---------+-------+-------+------------------+
| 161 | bacula | localhost | bacula | Sleep | 25525 | | NULL |
| 3438 | cms | localhost | CMS | Sleep | 2114 | | NULL |
| 3439 | cms | localhost | CMS | Sleep | 1224 | | NULL |
| 3440 | cms | localhost | CMS | Sleep | 4353 | | NULL |
| 3441 | cms | localhost | CMS | Sleep | 4334 | | NULL |
| 3442 | cms | localhost | CMS | Sleep | 3094 | | NULL |
| 3443 | cms | localhost | CMS | Sleep | 2217 | | NULL |
| 3444 | cms | localhost | CMS | Sleep | 2137 | | NULL |
| 3445 | cms | localhost | CMS | Sleep | 2244 | | NULL |
| 3446 | cms | localhost | CMS | Sleep | 4148 | | NULL |
| 3447 | cms | localhost | CMS | Sleep | 2282 | | NULL |
| 3448 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+------+--------+-----------+--------+---------+-------+-------+------------------+
Onderaan zie je het commando zelf, erboven applicaties zoals het backup programma bacula en een cms toepassing.
Upd 2018-02:
Je kan informatie van de (ook mariadb) server krijgen:
mysqladmin -uroot -p pr
pr
is afkorting van “processlist” (toont lijst van aktieve “threads” in de server)
Je kan hier zien in welke “state” een process is.