Anbytarforum

Titel: Äldre inlägg (arkiv) till 2008-09-09
Skrivet av: Anbytarvärd (Admin) 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)
 
Mvh
Forumgruppen