mysql daemons - performance

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Dennis WhoCares

Dennis WhoCares

02/08/2017 18:22:09
Quote Anchor link
Dag allemaal,

ik heb van de week de overstap gemaakt naar meerdere mysql daemons oo mn ubuntu server.
De reden is dat de daemon maar 1 core gebruikt en tijdens grote bewerkingen deze vol loopt en andere websites hierdoor in de wacht staan.
Dit heeft wel degelijk gewerkt, maar is hier geen andere oplossing voor?

Een of ander truukje om mysql biiv. 2 of 3 cores te laten gebruiken?

Het is heel irritant, hoewel de queries geoptimaliseerd zijn en handeling al beperkt dmv complete csv-,xml- imports naar een tijdelijk tabel enz.
Vervolgens zijn er soms nog steeds losse handelingen nodig, o.a. tickets combineren enz per nieuwe toegevoegd.
Dit kan soms 4-8 seconden duren.. x 10 (ondertussen)
Staan bezoekers op de gehoste sites te wachten.

Hopelijk kan iemand mij hier een gouden tip geven :)
 
PHP hulp

PHP hulp

23/11/2024 05:14:42
 
Ben van Velzen

Ben van Velzen

02/08/2017 20:47:36
Quote Anchor link
>> De reden is dat de daemon maar 1 core gebruikt en tijdens grote bewerkingen deze vol loopt en andere websites hierdoor in de wacht staan.
Nee. Niet waar. MySQL is een multithreaded proces en zal daarmee altijd meer cores gebruiken, tenzij hardhandig het proces is vastgepind op 1 core. Per query wordt *wel* 1 core gebruikt, maar dat is niet meer dan logisch. Hoe wil je het immers anders doen? Meerdere MySQL servers op 1 machine is nooit de oplossing, omdat MySQL als database gek is op RAM en de caches die daarmee gepaard gaan.

Wanneer je data aan het importeren bent zullen er door de database locks genomen worden om inconsistentie te vermijden. Hier komt ook je vertraging op andere verbindingen vandaan. Je kunt dit deels oplossen door transacties op een intelligente manier toe te passen, met een geschikt isolatieniveau. Zie de handleiding voor de SET TRANSACTION syntax.
 
Peter K

Peter K

03/08/2017 07:38:20
Quote Anchor link
@Dennis
Kun je toelichten wat je precies allemaal uitvoert en hoe je dit uitvoert?
Het zou goed kunnen dat er wellicht een technisch betere oplossing is.

Is je machine wel toereikend voor alle berekeningen die je wenst uit te voeren?
Persoonlijk hou ik er van om wat overcapaciteit te hebben op de hardware.
 
Dennis WhoCares

Dennis WhoCares

03/08/2017 09:52:42
Quote Anchor link
Hi Peter,

Voor elke import script (niet op achtergrond, niet tegelijk) {
1) download via curl of ftp een txt, csv, xls(x) of xml bestand van ticket systemen.
Deze files zet ik mbv shell_exec om naar utf8 (voor de zekerheid) (PHP)
2) deze importeer ik in z'n geheel naar een tijdelijk tabel (SQL)
3) update mijn eigen tabel, adhv data uit tijdelijk tabel (SQL)
4) alles wat niet in eigen tabel staat van de tijdelijke tabel, insert met een uniek gegeven. (SQL)
5) { voor elk uniek gegeven, bereken verschillende data, kostenprijs enz (op basis van bepaalde berekeningen in PHP)
UPDATE de ticket in eigen tabel (SQL)
update ticket met nieuwe
}
6) Push bepaalde data door (API)

Het punt is dat stap 5 soms wel wat langer duurt dan gewenst wat resulteerd in een 100% CPU gebruik op 1 core.

Ik heb al een extra mysqldaemon draaien om de ene database op een andere service te draaien, en dus gebruikt die ook een andere core.


Server specs:
16GB RAM
CPU 8Cores
1TB SDD
Ubuntu VPS

De RAM gebruik is heel laag, ligt gemiddeld op 4.5GB over een hele dag


Wellicht kan ik bij stap 5 ipv enkele queries, een batch maken, wat wellicht wel wat zal schelen.
Dit ga ik later vandaag doorvoeren op alle imports.
Gewijzigd op 03/08/2017 09:53:29 door Dennis WhoCares
 
Ben van Velzen

Ben van Velzen

03/08/2017 10:36:44
Quote Anchor link
Wat je hier schetst bevestigt mijn vermoeden dat je gewoon naar contention zit te kijken. Dat anderen moeten wachten is hierin een veiligheidsmaatregel die je op een verkeerde manier probeert te omzeilen. Als data veilig gelezen kan worden door andere verbindingen terwijl je aan het updaten bent (en dat is standaard niet zo) zul je dit met het isolatieniveau van je transacties moeten oplossen.
 
Peter K

Peter K

03/08/2017 11:51:14
Quote Anchor link
Vergelijk je elke keer alle volledige data? Dan zal het met verloop van tijd alleen maar langzamer worden.

Wat wellicht een betere oplossing is, is om te gaan kijken wat gewijzigd is t.o.v. de vorige keer. En enkel dat te vergelijken met elkaar, dit zal een boel wijzigingen schelen.

Edit: hoe vaak draait je "probleem" script?
Gewijzigd op 03/08/2017 11:52:09 door Peter K
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.