23. november 2011 - 16:05Der er
8 kommentarer og 1 løsning
Lucene.net - Out Of Memory Exception
Hejsa
Jeg har flere gange lavet søgninger i lucene.net, og det har virket upåklageligt.
Nu har jeg så lavet det på et site, hvor der er rimelig meget trafik - specielt fra google-bot, og efter ca. 15 minutter fosser det ind med "Out of Memory" Exceptions.
Der er rigeligt med ram på serveren (16GB), hvoraf 11 GB stadig er ledig. Jeg sørger for at lukke alt, der kan lukkes efter brug.
Umiddelbart virker det som om garbage collectoren ikke kan følge med.
Jeg søgt lidt på google, og mange siger, at der er et memory-leak i version 2.9.2 (som jeg bruger), men jeg kan ikke finde nogen løsninger. Jeg har prøvet at opgradere til version 2.9.4, som ikke officielt er udgivet endnu, men det hjalp ikke.
Er der nogen, der har erfaring med Lucene.net, som evt. kunne hjælpe? Eller kan man gøre noget for at få serveren til at rydde op lidt hurtigere?
Jeg tror måske du er inde på noget af det rigtige.
Jeg snakkede lige med ham, der styrer serverne, og vi har åbenbart 32-bit enabled på webserverne, da der er noget gammelt asp-kode, der aldrig er blevet udskiftet. Ramforbrug på hver worker-process kom heller aldrig over 2,8GB
Jeg prøvede så at slå 32-bit fra på vores test-server og tæskede den med søgeforspørgsler.
Nu kommer der så ikke out of memory fejl mere, men den sluger alt ram og mere til. Der er 16GB ram på maskinen, og da jeg stoppede testen, var worker-processen oppe på 26GB, så den lægger åbenbart også noget på swap.
Serveren blev ualmindelig langsom, og det hjalp først da jeg recyclede application pool og genstartede websitet.
Jeg har læst om folk, der bruger Lucene til indexering af 100-vis af millioner af dokumenter, så det undrer mig, at det performer så dårligt med de ca. 350.000 forumindlæg vi har.
Har du forstand på Lucene, så du ville kunne se på min kode, om jeg har gjort noget forkert?
Jeg har jo læst en del om Lucene på nettet, og stort set alle, der bruger Lucene, ser det som en selvfølge, at man skal cache searcher-objektet. Derved kan der køres mange søgninger på samme object og dermed gøre søgningen noget hurtigere. Det havde jeg selvfølgelig også gjort og tænkte ikke videre over det.
Problemet er åbenbart, at der ikke er noget loft på cachen, så den voksede bare intil serveren crashede. Jeg forsøgte at nulstille cachen hvert tiende minut, men rammene blev aldrig frigivet.
Nu har jeg slået caching fra, og den bruger ca. 2-300 MB konstant. Søgningerne går lidt langsommere, men nu virker det da.
Der må nok være en fornuftig måde at bruge caching på, men det lykkedes altså ikke for mig :-)
Men tak for din tid, jeg har da i det mindste lært lidt af det... Hvis du vil have pointene, må du oprette et svar.
Jo, du kom måske ikke med løsningen, men du kom de rigtige spørgsmål :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.