Avatar billede rbl Praktikant
23. november 2011 - 16:05 Der 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?

På forhånd tak
Avatar billede arne_v Ekspert
23. november 2011 - 16:12 #1
64 bit Windows og 64 bit CLR?
Avatar billede arne_v Ekspert
23. november 2011 - 16:13 #2
GC kan altid foelge med. Om noedvendigt stopper den andet mens den goer sig faerdig.
Avatar billede rbl Praktikant
24. november 2011 - 09:18 #3
Det er Windows Server 2008 R2 Standard 64 bit.

Hvor tjekker jeg det med CLR?
Avatar billede arne_v Ekspert
24. november 2011 - 17:27 #4
Bygger du til x86, x64 eller AnyCPU?
Avatar billede rbl Praktikant
25. november 2011 - 11:11 #5
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?
Avatar billede arne_v Ekspert
26. november 2011 - 03:11 #6
Jeg har aldrig selv brugt Lucene.NET (eller Lucene for Java).

Lidt googling antyder at memory leaks er set foer for Lucene.NET.

Hvis det ikke hjalp at upgrade - har du proevet at downgrade?
Avatar billede rbl Praktikant
08. december 2011 - 13:03 #7
Så fik jeg det endelig løst.

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.

Mvh
Rasmus
Avatar billede arne_v Ekspert
14. december 2011 - 03:57 #8
svar

men jeg synes nu ikke at jeg har hjulpet ret meget her
Avatar billede rbl Praktikant
14. december 2011 - 08:21 #9
Jo, du kom måske ikke med løsningen, men du kom de rigtige spørgsmål :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester