Het komt bij ons (hostingbedrijf) met enige regelmaat voor dat een klant met een slecht geschreven query of een (tijdelijk) erg drukke site een van onze databaseservers overmatig belast. We moeten vervolgens met de hand ingrijpen en aan de hand van logs gaan uitzoeken welke gebruiker/site dit veroorzaakt heeft.
Liever zouden we hier natuurlijk proactief op in willen springen, door alle gebruikers een bepaalde limiet te geven (processortijd/aantal queries ...) en het account uitschakelen wanneer die overschreven wordt, of accounts te throttlen, dus een bepaald aantal queries per seconde door te laten.
Voor zover ik weet kan dit standaard niet met MySQL. Als je naar dit onderwerp zoekt op internet kom je veel lovende verhalen tegen over JasperReports DBA Dashboard for MySQL. Echter, deze voert alleen periodiek een aantal queries uit, "SHOW STATUS", "SHOW PROCESSLIST", "SHOW TABLE STATUS" en "USE INFORMATION_SCHEMA". Hier hebben we dus nog steeds niks aan, omdat hier ten eerste niet uit te halen is hoe lang queries duren, en ten tweede is het niet sluitend, omdat het periodiek is.
Uiteraard is dit (deels) zelf wel te doen, door mysql bijvoorbeeld naar een fifo te laten loggen, en die met een zelf geschreven tooltje uit te lezen. Echter, logging kost performance, en als de fifo stuk gaat gaat heel MySQL op z'n plaat.
Wellicht is een andere manier om een kleine uitbreiding op de source te maken, maar voordat ik dat in productie durf te nemen op een server met 4000+ databases en gemiddeld 1000 queries per seconde zijn we weer een jaar verder
.
Dus, weet iemand hier bestaande tools voor, die redelijk 'proven technology' zijn, of dat er andere goede manieren zijn om dit te doen?
PS. Op dit moment bieden we alleen MySQL 4.1 aan, maar uiteraard moet rekening gehouden worden met MySQL 5. We draaien alles op Linux.
PPS. Ik heb dit topic in PNS gezet, omdat hij mijns inziens in geen ander subforum thuis hoort. Het is niet alleen Windows of Linux gerelateerd, en is zeker geen 'Client Software'.
Liever zouden we hier natuurlijk proactief op in willen springen, door alle gebruikers een bepaalde limiet te geven (processortijd/aantal queries ...) en het account uitschakelen wanneer die overschreven wordt, of accounts te throttlen, dus een bepaald aantal queries per seconde door te laten.
Voor zover ik weet kan dit standaard niet met MySQL. Als je naar dit onderwerp zoekt op internet kom je veel lovende verhalen tegen over JasperReports DBA Dashboard for MySQL. Echter, deze voert alleen periodiek een aantal queries uit, "SHOW STATUS", "SHOW PROCESSLIST", "SHOW TABLE STATUS" en "USE INFORMATION_SCHEMA". Hier hebben we dus nog steeds niks aan, omdat hier ten eerste niet uit te halen is hoe lang queries duren, en ten tweede is het niet sluitend, omdat het periodiek is.
Uiteraard is dit (deels) zelf wel te doen, door mysql bijvoorbeeld naar een fifo te laten loggen, en die met een zelf geschreven tooltje uit te lezen. Echter, logging kost performance, en als de fifo stuk gaat gaat heel MySQL op z'n plaat.
Wellicht is een andere manier om een kleine uitbreiding op de source te maken, maar voordat ik dat in productie durf te nemen op een server met 4000+ databases en gemiddeld 1000 queries per seconde zijn we weer een jaar verder
Dus, weet iemand hier bestaande tools voor, die redelijk 'proven technology' zijn, of dat er andere goede manieren zijn om dit te doen?
PS. Op dit moment bieden we alleen MySQL 4.1 aan, maar uiteraard moet rekening gehouden worden met MySQL 5. We draaien alles op Linux.
PPS. Ik heb dit topic in PNS gezet, omdat hij mijns inziens in geen ander subforum thuis hoort. Het is niet alleen Windows of Linux gerelateerd, en is zeker geen 'Client Software'.