Blog 1. Het databeest is weggelopen..

In de testfases vooraf het online zetten van het forum in het begin van oktober, heeft een klein groepje personen toegang gekregen en alle functies kunnen uitproberen.
Daarbij kwamen we geen directe fouten tegen en ook de server bleek geen opvallende kuren te hebben.
Ook in de eerste dagen dat het forum online was, liep alles nog redelijk soepeltjes op wat gebruikers instellingen omtrent forum rechten en nieuwe modificaties. Nadat het forum weer flink bezocht werd, kregen we klachten dat het af en toe nog lang duurde voordat het forum geladen was en af en toe een melding van CloudFlare.

In samenwerking met de technische ondersteuning van het hosting (bedrijf waar de server van gehuurd word door FarmFood) zijn we een onderzoek gestart wat er precies aan de hand was. In eerste instantie bleek het tijdelijke geheugen van de server (het zogeheten RAM-geheugen) steeds vol te lopen door de vele database aanvragen.
De oplossing die geboden werd was het verhogen van het tijdelijke geheugen van 8 tot het maximale 16 gig die de hosting aanbied. Na het forum weer even offline gehad te hebben en een herstart van de server, bleek het forum weer lekker te lopen. Helaas bleek dit toch niet de oplossing te zijn want binnen de korsten keren was het tijdelijke geheugen weer aan zijn limiet en kon vaak de database niet aangeroepen worden, Het databeest was weggelopen..

Normaal gesproken, moet een database server deze problemen niet hebben..
De werking zit namelijk zo:
Stel je klinkt een onderwerp aan, dan geeft de forum software een commando aan de database server om alle data (berichten, berichten info enz.) te verzamelen en terug te sturen naar de forum software die het vervolgens op het beeldscherm laat zien in leesbare en zichtbare content. Tijdens het verzamelen van deze data laad de server dit eerst in het tijdelijke geheugen en als het verzamelen klaar is en terug gestuurd naar de forum software is, verwijderd hij de data weer uit het tijdelijke geheugen. En hier blijkt dus een fout in op te treden. De data word namelijk niet verwijderd uit het tijdelijke geheugen waardoor het tijdelijke geheugen dus op zeker punt zijn kritieke niveau heeft behaald en het databeest weg loopt. Ook de zoekfunctie die we in de testfase meegenomen hebben, blijkt een grote veroorzaker te zijn. Zo worden alle 6 miljoen berichten (dit is 14 gigabyte aan data) in de database doorzocht. Met dit soort zoekacties en een tijdelijke geheugen die niet geleegd word, kun je nagaan hoe snel het tijdelijke geheugen vol raakt. Ook heb ik het nog even aangekeken of het forum wel lekker zou draaien zonder de standaard zoekfunctie, en een functie die via de geïndexeerde pagina’s van Google zocht maar zette helaas geen zode aan de dijk.

Daarna weer met de technische ondersteuning om de tafel om ideeën uit te wisselen en kijken of we de oorzaak van dit probleem konden vinden. Fora’s, help-chats met de ontwikkelaars van de software en nog meer informatie bronnen werden geraadpleegd om er achter te komen. De uitslag was positief. Er waren forums die na updaten het zelfde probleem ervaarden, plus enkele positieve oplossingen hiervoor.

Doordat dat de nieuwe forum-software ook weer nieuwe eisen stelt aan de minimale specificaties van de server en de software, bleek dat de database structuur en engine niet 100% compatible is met de nieuwe server.

De structuur van tabel kun je vergelijken met de inhoud van een Excel document met verschillende cel-eigenschappen (bijvoorbeeld tekst, getal, valuta). De engine moet je zien als diversen manieren om commando’s zo geoptimaliseerd mogelijk te verwerken. Zo heb je een engine die geoptimaliseerd is in databases met alleen nummers/valuta/datums en een die geoptimaliseerd is voor een fotodatabase.
Om even in de vergelijkingen te blijven: De oude database heeft de oude Diesel zonder Turbo variant en de nieuwe database heeft de snellere Benzine variant.

1e optie: Een commando uitvoeren die de structuur en engine van een tabel met data aanpast.
Helaas is hier heel wat geheugen voor nodig om dit uit te voeren. De grootste tabel is 6 gig. Deze bevat alle forum berichten (6 miljoen). Dit resulteerde in fouten en momenten waarbij het databeest weer weg liep. Na het herstarten van de database server (de enige manier om hem weer te kunnen gebruiken) Moest de database alle veranderingen weer terug draaien. Hier en daar werden wat instellingen gewijzigd door de host maar we kregen steeds het zelfde resultaat.. Opnieuw beginnen dus.

2e Optie: De structuur van de database exporteren in een gecodeerd bestand, deze aanpassen zodat hij via de nieuwe engine loop en onder een tijdelijke database te importeren. Daarna het zelfde met de data uit de database vervolgens de oude database verwijderen en de tijdelijke database hernoemen. Zo hebben we dus een 1 op 1 kopie van de database, met de juiste structuur en engine.

Doordat de totale database meer dan 20 gigabyte groot is ging hier veel tijd in zitten doordat het in etappes moet om de server niet over te belasten. Op het laatst hield ik de 2 grootste tabellen over. De forum berichten en privéberichten (2 miljoen). En toen kwam er weer een probleem om de hoek kijken. Limiet van de database server ruimte bereikt.. De database server zijn ruimte ligt iets lager dan het tijdelijke geheugen. Dit kan niet groter zijn dan het tijdelijke geheugen. Gevolg was weer een databeest wat weggelopen was. Daarnaast zat ik dus met 3 kwart van de database klaar.

3e Optie: De gehele database exporteren, in de code de structuur en engine aanpassen, database verwijderen, en de nieuwe database importeren. Daar zijn een paar manieren voor.
1. Bestand uploaden naar de server en op de server het commando voor het importeren starten.
2. Bestand via een database beheer paneel uploaden en uitvoeren.
3. Bestand met een hulpprogramma importeren.

Resultaten:
1. Het commando heeft geen opties om de data met tussenpozen (om de server niet veel te belasten) en daar gingen we weer.
2. Helaas, het uploaden via het paneel heeft een maximale upload grote van 2 gigabyte terwijl het bestand enkele malen groter is.
3. Dit hulpprogramma heeft een aantal instellingen waardoor je kunt kiezen hoeveel data er in een keer verstuurd word, en hoelang hij wacht totdat hij de volgende reeks data verstuurd. Na een aantal testen de beste instellingen ingesteld en van start gegaan. Helaas, pindakaas.. Er kwamen namelijk weer wat problemen om de hoek kijken. Ten eerste word het bestand eerst compleet geladen in het tijdelijke geheugen, daarna start het programma het selecteren van data, wat óók weer in het tijdelijke geheugen opgeslagen word. Daarnaast is er nog een factor van een groeiende database waardoor alles weer uitdraaide in een incomplete database.

Met al deze ‘trail and errors’ begon in te twijfelen aan de positieve oplossingen die er waren. Waarom lukte het die forums wel en dit forum niet? Na wat meer gelezen te hebben en contact gehad te hebben werd het al snel duidelijk. Dit waren kleine forums met databasen die niet groter waren dan 1 gigabyte wat dus voor vele mindere problemen zorgen. Daar ging de hoop dus.

Al met al kost dit super veel tijd. Ook omdat er voor elke actie die gedaan word, een complete back-up gedaan word naast de dagelijkse en wekelijkse back-ups die in de nacht draaien. in die tijd van back-ups maken kan er geen werk verricht worden omdat dat anders resulteert is corrupte back-ups. Ook doe ik dit soort werkzaamheden vooral in de avond en in de nacht en indien mogelijk tussen het werk door. En af en toe een dagje rust.

Gelukkig hebben we de moed nog niet opgegeven en dat is te lezen in de volgende blog.

Bero.

P.S. Taal en spelling is niet mijn sterkste punt helaas mocht daar enig commentaar op zijn.

3 reacties op “Blog 1. Het databeest is weggelopen..”

  1. Wat geweldig dat je er zoveel tijd en energie in stopt! Ik wens heel veel succes. We wachten met spanning op het resultaat. Groetjes, ZorroMax

  2. Nou van wat ik begrijp zijn jou handen nu gebonden en moet je dus wachten dat farmfood alles goedkeurd en over de brug komt
    Jij hebt gedaan wat je kon doen daarvoor heel erg bedankt
    groetje meta

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *