Out of memory

4 posts / 0 new
Last post
Anonymous
Out of memory

Hi all,

This is the second time that We get a OutOfMemory

My VM setting is

-Xms128M -Xmx512M -XX:PermSize=32m -XX:MaxPermSize=256m -XX:MaxDirectMemorySize=128m

Any idea about this issue ?

2012-03-27 19:27:39 ThreadExceptionHandler.uncaughtException() SEVERE: Uncaught thread: "msgoffline Queue Worker 7" exception
java.lang.OutOfMemoryError: Java heap space
2012-03-27 19:27:39 ThreadExceptionHandler.uncaughtException() SEVERE: Uncaught thread: "IPMonitor Timer" exception
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.LinkedHashMap.newKeyIterator(LinkedHashMap.java:396)
at java.util.HashMap$KeySet.iterator(HashMap.java:874)
at java.util.HashSet.iterator(HashSet.java:153)
at tigase.server.xmppclient.IPMonitor$1.run(IPMonitor.java:70)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
2012-03-27 19:27:39 ThreadExceptionHandler.uncaughtException() SEVERE: Uncaught thread: "socketReadThread-24"ThreadExceptionHandler.uncaughtException() SEVERE: Uncaught thread: "socketReadThread-22" exception
exception
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.HashMap.newKeyIterator(HashMap.java:840)
at java.util.HashMap$KeySet.iterator(HashMap.java:874)
at java.util.HashSet.iterator(HashSet.java:153)
at sun.nio.ch.SelectorImpl.processDeregisterQueue(SelectorImpl.java:127)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:69)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:84)
at tigase.net.SocketThread.run(SocketThread.java:251)
at java.lang.Thread.run(Thread.java:619)
2012-03-27 19:27:39 ThreadExceptionHandler.uncaughtException() SEVERE: Uncaught thread: "socketReadThread-22" exception

Application: 

Is it possible that for some user there was quite huge (relatively to memory limitation you've set up) amount of offline data stored in the DB?

Manuel

If this is the problem,

There is some way to avoid it ?

What about the memory setting, is enough for a production server ?

Regards
Manuel

We have Tigase installations running with just 10MB of RAM. So this is not a question about how much you need but what the installation is for. What do you plan to do with it, how many users, average roster size, etc...
In your case, it looks like the most likely problem is with offline messages for some user. Probably there is a very high number of messages waiting for one user and when he comes online, the server tries to read all of them to send to the user. Probably there is more messages than the server can keep in memory so it runs out of memory during the process.
Unfortunately, this is a bug in the Tigase and we have just fixed it a few weeks ago. The only solution for you right now is to remove those messages from the DB to make it possible for the user to login without breaking the server.