CRASH SERVER
Blamo27 opened this issue ยท 10 comments
Hello,
My server crashed : http://pastebin.com/89W2ScSn
Magic memory leak ?
[07:22:49] [Thread-22/WARN]: Exception in thread "Thread-22" [07:22:49] [Thread-22/WARN]: java.lang.OutOfMemoryError: GC overhead limit exceeded [07:22:49] [Thread-22/WARN]: at net.coreprotect.database.Database.prepareStatement(Database.java:219) [07:22:49] [Thread-22/WARN]: at net.coreprotect.consumer.Process.processConsumer(Process.java:60) [07:22:49] [Thread-22/WARN]: at net.coreprotect.consumer.Consumer.run(Consumer.java:48) [07:22:49] [Thread-22/WARN]: at java.lang.Thread.run(Thread.java:745)
[Server thread/WARN]: [Magic] Task #760 for Magic v5.5.6-SNAPSHOT generated an exception java.lang.OutOfMemoryError: GC overhead limit exceeded
[Server thread/ERROR]: Encountered an unexpected exception java.lang.OutOfMemoryError: GC overhead limit exceede
We think that the issue is from the laser spell.
You'll have more informations in few hours.
After some testing, we found out that the issue was very similar to the one we encountered several months ago with Tornado : #158
When you cast Laser with increased spell damage, the server crashes. We are going to re-configure it the same way we did for Tornado so it won't happen again, I will update you on how that turns out.
We found what was causing the issue, it was this piece of configuration right there in the laster actions :
actions:
- class: Disc
actions:
- class: Damage
We removed it, now it works fine.
Considering that version of Magic is almost a year old it seems very unlikely for a memory leak to suddenly appear.
Have you added any other plugins lately?
You could of course try removing Magic to see if that's the problem. Unfortunately timings don't show memory use, so your other option is to run WarmToast or some other profiler.
Memory leaks are tricky, the thing that's leaking may not be the thing that shows up when memory happens to run out. It's just as likely to be CoreProtect, or basically anything else. Though if there is a stack trace with Magic stuff in it, I'd be interested to see that.
You could also try raising your memory limit, it may not be a memory leak but just more memory demand, in which case increasing the limit may fix the problem. If it is a true memory leak then that will only postpone the crash.
I did find some good spots in EffectLib to optimize, though. Nothing that would really explain anything you're seeing, but that's a positive, at least.
Yes run a profiler could be nice to see more informations.
What is your profiler to check these informations ?
It was impossible to see that with spigot timings.
I use Flight recorder, it comes with the JDK. It's a little trickier to set up than WarmRoast but not too bad. You have to run your server with some options like this:
java -Xmx4098M -XX:MaxPermSize=256M \
-Dcom.sun.management.jmxremote.port=9010 \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote -jar spigot.jar -o true
Then run "jmc" at the command-line and the Java Mission Control app will load, allowing you to attach to the spigot.jar instance while it's running and capture memory and CPU profile info.