Skriv ut sidan - Äldre inlägg (arkiv) till 2008-09-09
Anbytarforum
Titel: Äldre inlägg (arkiv) till 2008-09-09
Skrivet av: Admin C skrivet 2007-11-29, 10:02
Vår konsult meddelar: Det lilla belastningstestet vid tretiden idag gick inte så bra, utan fick avbrytas efter 10 minuter eftersom datorn gick på knäna på grund av alla sökningar. Skulle tro att alla nyfikna använde nytt senaste dygn och nytt senaste veckan.
Nu har jag under dagen tittat närmare på perlkoden och dessutom tillfälligt slagit på performance data i Discus och har fått mer insikt i vad som händer.
Alltså. Sökningarna utförs alla av samma perlprogram, search.pl. Detta börjar med att rådfråga MySQL-databasen för att få fram de inlägg som uppfyller sökvillkoren. Här ser jag inget fel. Alla sökningar går precis så fort man kan begära; ser jag rätt i loggfilen så rör det sig om någon halvsekund. Svaret skickas sedan från databasmotorn tillbaka till search.pl.
Därefter börjar problemen, för nu ska varje svar letas upp i trädstrukturen i forumet så att svaret kan presenteras för användaren med varje matchande inlägg presenterat under den rubrik det ligger.
Problemet är nu att Discus4 _inte_ använder en databas till detta. Istället använder man textfiler, en per grupp. Den största filen är den som innehåller landskapsgruppens struktur; den är cirka 8MB och 39000 rader, där varje rad är en undergrupp, inklusive de automatiskt skapade grupperna för arkiverade meddelanden. Det är ju egentligen inte särskilt stort, men forummjukvaran vill alltså läsa in hela filen i minnet och letar man inte i en speciell grupp så ska alla filerna läsas in i minnet, varje gång någon söker.
Det är detta som tar minst tre sekunder av datorns tid och runt 200 MB minne. Nu tycker jag inte, på ren magkänsla, att det är rimligt att en såpass här enkel operation tar så lång tid och drar så mycket minne, men jag kan inte förklara varför det blir så.
Den nya datorn är ju en virtuell maskin, 64bit, 2 CPUer, mycket nyare Linux och perl jämfört med den gamla, och det kan ju tänkas att något i den här konfigurationen gör att Discus4:s i det här fallet ineffektiva kod fungerar sämre än vad som var avsikten från Discuswares sida.
Jag klippte ut de delarna av perlkoden som läser in träd-textfilen för Landskapsgruppen och provkörde. På nya datorn tog det 2.5 sekunder och drog kanske 200 MB minne. På en annan vanlig (icke virtuell) dator (32-bit processor 2GHz Celeron, Linux 2.4; men samma perl (5.8.8)), tog det nästan 10 sekunder, men minnesåtgången var runt 60 MB.
Att minnesåtgången blir så stor på den nya datorn kan bero på att det är en 64-bit processor.
En sådan här operation ska alltså genomföras för varje sökning med träffar under Landskap, och söker man i alla grupperna ska kanske dubbla arbetet genomföras. Det säger sig självt att det inte fungerar för AF, med ovanstående prestandasiffror.
Jag noterade förresten att release notes till Discus 4.10 beta 1 (juli 2006) har med CHANGE: Remove partially developed but unimplemented tree-SQL code, vilket nog betyder att problemet är känt men lösningen blev inte färdig. Den kanske kommer i framtiden, kanske inte.
Googling på Kevin W. Paulisse får mig att tro att Discusware är ett fåmansföretag, i alla fall ett företag där grundaren och utvecklaren gör all supporten.
Vad kan vi göra? Här är lite blandade idéer..
- Fortsätta med nya forumet som det är. Då måste sökningarna stängas av, vilket inte är så roligt.
- Frysa det befintliga nya forumet och starta ett nytt, tomt. Stora bitar av den gamla strukturen måste läggas dit förstås. Sedan måste vi provköra så att inte samma problem med sökningar inträffar. Det _blir_ problem med tiden om inget händer i en ny version av Discus, men det tar kanske ett par år innan vi ser dem.
- Lägg ner Discus och starta vBulletin-forumet. Då får man vara utan Nytt senaste dygn i trädformat (väl?)
- Öppna det gamla forumet på den gamla maskinen och kör så gott det går, tills andra möjligheter provats.
- Betala någon för att på enklaste sätt ordna en effektivare lösning på sökproblemet i Discus. Källkoden finns ju, så tekniskt går det att ordna. Kostnaden är osäker, likaså tiden, och uppgraderingar blir svårt.
- Flytta gamla forumet inklusive gamla mjukvaran till ny dator. Då får man nog be att få en ny dator fast med äldre Linux och äldre perl. Det skulle säkert rulla på fortare än vad det gjorde förr, men knappast vara en framtidssäker lösning.
- Kontakta någon som kör Discus 4.10 och har ett stort forum ( är ju ett exempel) och fråga om de verkligen kör standard 4.10, eller om det är någonting som är fixat...
- Om vi organiserar om nya forumets grupper så att t ex Landskap blir Gamla Landskap (inte precis så men ni fattar idén) och stängs för skrivning, så kommer inlägg från de grupperna inte med i Nytt senaste... och då går det fortare med de sökningarna. Dock måste de nya grupperna fyllas med struktur och det är ju ett litet arbete (som möjligen kan göras enklare genom att man editerar just träd-textfilerna, tillsammans med databasexport + import)
- Utvärdera andra forummjukvaror, men det tar tid och vi måste ha en lösning under tiden.
- Gå loss på Discusware igen och se om de svarar. Man kan t ex fråga i forumet varför de inte svarar, emaila på nytt, faxa, ...
Det enda jag kan tänka mig att Discusware kan göra för oss på kort sikt är att ge ett handfast råd om hur vi borde strukturera grupperna för att trädfilerna ska bli så små att det hela blir hanterligt.
Arbetet går vidare! Skicka gärna synpunkter till anbytare@genealogi.se (http://mailto:anbytare@genealogi.se)