-
Q:
Topic-weergave in de war?
Gisteren heb ik deze topic geplaatst:
Maar, zoals dit screenshot laat zien, staat die topic plotseling niet meer in de huidige topic-lijst. Sterker nog: de topic schijnt op mysterieuze wijze omgewisseld te zijn met een totaal “verouderde” andere topic van ± een week geleden(zie rode pijl):Is dit een algemeen verschijnsel, of is dat alleen bij mij?
InactiefAnoniem16 november 2014 om 13:54Welkom op OMT, waar de community het kloppend hart is, maar de pacemaker regelmatig uitvalt
Dit is een bekend probleem, wat helaas niet zomaar op te lossen is. Ik zal omschrijven hoe het komt:
Het aantal posts loopt tegen de 3 miljoen aan. Dat is een boel, en de manier om op te vragen wat de laatste post is, is door alle posts onder elkaar te zetten en te sorteren op meest recente.
Als dit 1000 posts zijn, is het binnen 1sec gedaan. Bij 3 miljoen zou het minimaal 40 seconden duren voordat de voorpagina geladen is. Er zijn dagelijks tienduizenden mensen op de voorpagina, dat gaat niet opschieten en de server zou in rook opgaan van al dat werk.. daarom moeten we dat cachen. De cache maakt een lijstje dat statisch is (zie het als een tekstdocument) en vult het bij iedere nieuwe post aan. Dat gaat sneller.
Soms moeten we de cache legen. Om verschillende redenen –meestal typo’s in de kop of samenvatting die in RSS-feeds of Facebook-posts worden opgenomen en die we snel overal weg willen
– en dan is het actuele lijstje ook uit de cache weg. Die cache moet dan opnieuw worden gevuld, dat gaat automatisch als er weer opnieuw gepost wordt. Dat duurt dus even…
Een handigere manier zou (als je het mij vraagt) zijn; Maak het lijstje iedere 5 minuten op de achtergrond en toon dat op de voorpagina. Hoe en of dat mogelijk is weet ik niet, maar dat ga ik navragen bij onze ontwikkelaars.
Jup. Dit is een ding waar bbpress (onze forumsoftware die op wordpress gebaseerd is) niet zo goed in is. We hebben hier zelf al enorm veel aan gepatcht en dingen overschreven. Als het een standaard bbpress-installatie was, zou de site constant bezwijken onder zijn grootte. Daarom moeten we zelf slimme workarounds zien te bedenken etc, ik gooi dit nog eens in de development-groep met mijn idee er achteraan
@Raymon: bedankt voor de uitleg. Is in ieder geval duidelijk waar het door komt.
Is het misschien een optie om een aparte tabel aan te maken waar telkens een record in wordt geplaatst als een nieuw topic wordt gemaakt.
En waar je op dat moment dan ook alle records uit verwijderd na het 10e of 20e of whatever grens.
Dat moet altijd snel gaan, want de tabel blijft op die manier lekker klein.
Dan hou je een korte lijst met recente topics die je kunt gebruiken voor de homepage.Raymon op 16 november 2014Het aantal posts loopt tegen de 3 miljoen aan. Dat is een boel, en de manier om op te vragen wat de laatste post is, is door alle posts onder elkaar te zetten en te sorteren op meest recente. Als dit 1000 posts zijn, is het binnen 1sec gedaan. Bij 3 miljoen zou het minimaal 40 seconden duren voordat de voorpagina geladen is.
Het is misschien niet zo handig om iedere keer de hele set opnieuw te sorteren. Als je de (op tijd) gesorteerde lijst bewaart, en daar de nieuwe posts aan toevoegt, heb je op ieder moment de meest actuele lijst, én gesorteerd.
We zijn hier intern dieper op ingedoken:
Op het moment worden de rijtjes uit de database gehaald. Als er een nieuwe post of reply is, wordt het rijtje meteen gewijzigd. We hebben het vermoeden dat hier iets fout gaat; een reply die gepost wordt vlak na het legen van de cache bijvoorbeeld.
Daarnaast heb je nog dat er n keer tegelijk een nieuwe versie in de cache gezet kan worden wanneer meerdere mensen tegelijk de lijsten opvragen, maar deze niet in de cache zitten. Op een drukke avond zitten er zo’n 500 man op de voorpagina.
We denken dat de makkelijkste oplossing is om hier een cronjob voor te maken. Om de vijf minuten de lijstjes opnieuw genereren, en niet proberen om die realtime bij te werken. Dan heb je hoogstens 4:59 minuut na een deploy of na het legen van de cache geen lijstjes, en lopen de lijstjes gewoon wat achter. Door hem vanuit de gebruikerskant alleen maar op te halen en niet te genereren, voorkom je ook dat lijstjes meermaals uit de database gehaald worden.
Daarnaast is het cache clearen uit te breiden met een ‘opwarmstukje’ dat de postcache al opvraagt, waardoor je nog minder ‘lang’ met issues zit én de snelheid van de site omhoog gaat. We gaan dit in een volgende update-release meenemen.
@Raymon je mag weer een keertje op je knopje drukken..
Hoe komt het dat een post wel in Safari zichtbaar is, ook in de forumoverzichten te zien is, maar niet op andere apparaten en in andere browsers te zien is?
Dan bedoel ik de post zelf, de forumoverzichten kloppen overal, maar de post zelf zie je alleen op het apparaat+browser waar je de post postte.
Vreemd, het gaat om een post van mijzelf. http://www.onemorething.nl/community/topic/lollige-filmpjes-topic/page/76/#post-2770923
Edit: dat schijnt ineens minimaal vijf minuten te duren. Opgelost.
Deze topic van mij is zojuist op slot gezet:
http://www.onemorething.nl/community/topic/de-zoveelste-bug-op-omt/
In aanmerking genomen de geambieerde flitsende journalistieke aanpak, gaat die aanpak onderhand wel lijken op een vlag op een modderschuit (vergeef me deze beeldspraak). De Grote Vraag ( na zoveel jaren niets doen op het bug-gebied) is:
Wanneer gebeurt er nu eindelijk iets aan deze irritante mankementen?@sedikit, Ach…! Leuk voor een nieuwe topic ‘Forumonderhoud 2015’ misschien? Zo langzamerhand is het voor OMT de standaard geworden. Oplossen kunnen ze deze bug niet kennelijk. Het heeft waarschijnlijk niet de hoogste prioriteit.
Raymon op 01 december 2014Voortaan zal ik iedere post over development afsluiten met: Ja, ja. En we balen net zo van bbpress als jij, geloof me.
Cache gereset.
Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.