On 01/03/2011 12:38 PM, Andreas Hahn wrote:
Hi XWiki users,
fwiw I just want to share my experiences and observations with XWiki
instance running out of memory.
I was having a hard time to track this down but in the end I could
successfully isolate the problem.
For quite some time my XWiki instance was getting unresponsive to
requests sooner or later.
The Wiki was hosted on a VirtualBox VM and in most cases the VM guest
was just freezing and needed to be restarted leaving no usable traces in
the logs. In some cases I even found JVM crash reports so I first
checked different JVMs and VirtualBox versions (PUEL and OSE licences).
I had no success with this approach and so I moved the XWiki directly to
a host environment (Ubuntu 10.10). I added Server instrumentation
(VisualVM) but still the wiki got down after a while. Surprisingly the
system was hanging although in many cases there was even enough memory
available (I checked different VM settings up to 4GB).
Finally a VisualVM thread dump showed what happened:
When the robots came visiting my service they query a large number of
pages and among them was one user-url:
.../XWiki/someUser which ran into an infinite looping condition when
rendering the page.
I don't know how this could happen but as a result the whole memory was
consumed and partly released afterwards so it seemed that there is still
enough space available. Once this happened however the Webserver needed
to be restarted because it wasn't responsive any more.
Since I have deleted this user account everything is running ok for a
couple of days now - I still have to move the service back into the
VirtualBox guest VM.
What puzzles me finally that its possible that one single request can
kill the service by going into an infinte rendering loop.
I would have thought that at some level there is a depth limit to
prevent such conditions.
Normally, there are recursion checks in different places, like velocity
macros can be nested to at most 20 levels (100 in 3.0). What would help
is exporting the user profile as XAR and uploading it somewhere so that
we can see what's causing this specific problem.
Hope these observations help someone though ....
--
Sergiu Dumitriu
http://purl.org/net/sergiu/