webbukkit / dynmap

A set of Minecraft mods that provide a real time web-based map system for various Minecraft server implementations.
https://www.reddit.com/r/Dynmap/
Apache License 2.0
2.02k stars 414 forks source link

Memory leak with Dynmap 1.5 (Bukkit) when used with MCPC+ 1.4.7-R1.1 b245 and FTB/Ultimate 1.01 #1191

Closed WebMaka closed 11 years ago

WebMaka commented 11 years ago

Greetings Dynmap crew!

I'm running a test server to make sure all is well on Feed The Beast, Ultimate 1.01 running on MCPC+ 1.4.7-R1.1 build 245, and discovered a memory leak that ultimately crashes out the server with "out of heap space" errors. Removing only Dynmap (by adding ".disabled" to the filename so MCPC won't "see" it) resolved the issue, so it was pretty easy to narrow down.

Here's how MCPC reported its shutdown after its deadlock detector fired...

2013-03-13 18:26:59 [INFO] Stopping server 2013-03-13 18:26:12 [SEVERE] The server has stopped responding! 2013-03-13 18:29:02 [SEVERE] Please report this to http://www.mcportcentral.co.za/ 2013-03-13 18:28:43 [INFO] [EssentialsAntiBuild] Disabling EssentialsAntiBuild v2.10.1 2013-03-13 18:29:48 [SEVERE] Spigot version: 1.4.7-R1.1-SNAPSHOT 2013-03-13 18:29:48 [SEVERE] Begin Exception Trace For All Threads: 2013-03-13 18:29:41 [SEVERE] Exception in thread "Spigot Metrics Gatheri 2013-03-13 18:29:52 [SEVERE] ng Thread" Exception in thread "Listen thread" 2013-03-13 18:30:00 [SEVERE] Exception in thread "Immibis Core background task" 2013-03-13 18:30:00 [SEVERE] java.lang.OutOfMemoryError: Java heap space 2013-03-13 18:30:00 [SEVERE] java.lang.OutOfMemoryError: Java heap space 2013-03-13 18:30:03 [INFO] [EssentialsSpawn] Disabling EssentialsSpawn v2.10.1 2013-03-13 18:30:03 [INFO] [EssentialsChat] Disabling EssentialsChat v2.10.1 2013-03-13 18:30:24 [SEVERE] ------------------------------ 2013-03-13 18:30:41 [SEVERE] Current Thread: Server thread 2013-03-13 18:30:41 [SEVERE] PID: 18 | Alive: true | State: RUNNABLE 2013-03-13 18:30:45 [SEVERE] Stack: 2013-03-13 18:30:51 [INFO] [dynmap] Disabling dynmap v1.5-612 2013-03-13 18:31:09 [SEVERE] java.util.LinkedHashMap.createEntry(LinkedHashMap.java:421) 2013-03-13 18:31:12 [SEVERE] java.util.LinkedHashMap.addEntry(LinkedHashMap.java:403) 2013-03-13 18:31:12 [SEVERE] java.util.HashMap.put(HashMap.java:412) 2013-03-13 18:31:12 [SEVERE] org.anjocaido.groupmanager.permissions.BukkitPermissions.collectPermissions(Unknown Source) 2013-03-13 18:31:12 [SEVERE] org.anjocaido.groupmanager.permissions.BukkitPermissions$BukkitEvents.onPluginDisable(Unknown Source) 2013-03-13 18:31:12 [SEVERE] sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 2013-03-13 18:31:12 [SEVERE] sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 2013-03-13 18:31:12 [SEVERE] sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 2013-03-13 18:31:12 [SEVERE] java.lang.reflect.Method.invoke(Unknown Source) 2013-03-13 18:31:12 [SEVERE] org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:361) 2013-03-13 18:31:12 [SEVERE] org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) 2013-03-13 18:31:12 [SEVERE] org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) 2013-03-13 18:31:12 [SEVERE] org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) 2013-03-13 18:31:12 [SEVERE] org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:416) 2013-03-13 18:31:12 [SEVERE] org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:400) 2013-03-13 18:31:12 [SEVERE] org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:393) 2013-03-13 18:31:12 [SEVERE] org.bukkit.craftbukkit.v1_4_R1.CraftServer.disablePlugins(CraftServer.java:286) 2013-03-13 18:31:12 [SEVERE] net.minecraft.server.MinecraftServer.k(MinecraftServer.java:641) 2013-03-13 18:31:12 [SEVERE] net.minecraft.server.MinecraftServer.run(MinecraftServer.java:799) 2013-03-13 18:31:12 [SEVERE] fy.run(ThreadMinecraftServer.java:16) 2013-03-13 18:31:12 [SEVERE] ------------------------------ 2013-03-13 18:31:12 [SEVERE] Current Thread: pool-4-thread-1 Selector0 2013-03-13 18:31:12 [SEVERE] PID: 53 | Alive: true | State: RUNNABLE 2013-03-13 18:31:12 [SEVERE] Stack: 2013-03-13 18:31:12 [SEVERE] sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) 2013-03-13 18:31:16 [SEVERE] sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) 2013-03-13 18:31:20 [SEVERE] sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) 2013-03-13 18:31:20 [SEVERE] sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) 2013-03-13 18:31:20 [SEVERE] sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) 2013-03-13 18:31:20 [SEVERE] sun.nio.ch.SelectorImpl.select(Unknown Source) 2013-03-13 18:31:20 [SEVERE] org.dynmap.jetty.io.nio.SelectorManager$SelectSet.doSelect(Unknown Source) 2013-03-13 18:31:20 [SEVERE] org.dynmap.jetty.io.nio.SelectorManager$1.run(Unknown Source) 2013-03-13 18:31:20 [SEVERE] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 2013-03-13 18:31:20 [SEVERE] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 2013-03-13 18:31:20 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:31:20 [SEVERE] ------------------------------ 2013-03-13 18:31:20 [SEVERE] Current Thread: RMI TCP Accept-0 2013-03-13 18:31:20 [SEVERE] PID: 11 | Alive: true | State: RUNNABLE 2013-03-13 18:31:20 [SEVERE] Stack: 2013-03-13 18:31:20 [SEVERE] java.net.DualStackPlainSocketImpl.accept0(Native Method) 2013-03-13 18:31:20 [SEVERE] java.net.DualStackPlainSocketImpl.socketAccept(Unknown Source) 2013-03-13 18:31:20 [SEVERE] java.net.AbstractPlainSocketImpl.accept(Unknown Source) 2013-03-13 18:31:20 [SEVERE] java.net.PlainSocketImpl.accept(Unknown Source) 2013-03-13 18:31:20 [SEVERE] java.net.ServerSocket.implAccept(Unknown Source) 2013-03-13 18:31:37 [SEVERE] java.net.ServerSocket.accept(Unknown Source) 2013-03-13 18:31:37 [SEVERE] sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(Unknown Source) 2013-03-13 18:31:40 [SEVERE] sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(Unknown Source) 2013-03-13 18:32:03 [SEVERE] Error occurred while disabling dynmap v1.5-612 (Is it up to date?) java.lang.NoClassDefFoundError: org/dynmap/snakeyaml/serializer/Serializer at org.dynmap.snakeyaml.Yaml.dumpAll(Unknown Source) at org.dynmap.snakeyaml.Yaml.dumpAll(Unknown Source) at org.dynmap.snakeyaml.Yaml.dump(Unknown Source) at org.dynmap.ConfigurationNode.save(Unknown Source) at org.dynmap.DynmapCore.saveIDsByIP(Unknown Source) at org.dynmap.DynmapCore.disableCore(Unknown Source) at org.dynmap.bukkit.DynmapPlugin.onDisable(Unknown Source) at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:219) at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:422) at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:400) at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:393) at org.bukkit.craftbukkit.v1_4_R1.CraftServer.disablePlugins(CraftServer.java:286) at net.minecraft.server.MinecraftServer.k(MinecraftServer.java:641) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:799) at fy.run(ThreadMinecraftServer.java:16) Caused by: java.lang.ClassNotFoundException: Failed to remap class org.dynmap.snakeyaml.serializer.Serializer at org.bukkit.plugin.java.PluginClassLoader.remappedFindClass(PluginClassLoader.java:344) at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:265) at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:243) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 15 more Caused by: java.lang.OutOfMemoryError: Java heap space 2013-03-13 18:32:09 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:32:59 [SEVERE] ------------------------------ 2013-03-13 18:32:59 [INFO] [Essentials] Disabling Essentials v2.10.1 2013-03-13 18:33:04 [SEVERE] Current Thread: RMI TCP Accept-12323 2013-03-13 18:33:21 [SEVERE] PID: 12 | Alive: true | State: RUNNABLE 2013-03-13 18:33:21 [SEVERE] Stack: 2013-03-13 18:33:21 [SEVERE] java.net.DualStackPlainSocketImpl.accept0(Native Method) 2013-03-13 18:33:21 [SEVERE] java.net.DualStackPlainSocketImpl.socketAccept(Unknown Source) 2013-03-13 18:33:21 [SEVERE] java.net.AbstractPlainSocketImpl.accept(Unknown Source) 2013-03-13 18:33:21 [SEVERE] java.net.PlainSocketImpl.accept(Unknown Source) 2013-03-13 18:33:21 [SEVERE] java.net.ServerSocket.implAccept(Unknown Source) 2013-03-13 18:33:21 [SEVERE] java.net.ServerSocket.accept(Unknown Source) 2013-03-13 18:33:21 [SEVERE] sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(Unknown Source) 2013-03-13 18:33:21 [SEVERE] sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(Unknown Source) 2013-03-13 18:33:21 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:21 [SEVERE] ------------------------------ 2013-03-13 18:33:21 [SEVERE] Current Thread: Signal Dispatcher 2013-03-13 18:33:21 [SEVERE] PID: 5 | Alive: true | State: RUNNABLE 2013-03-13 18:33:21 [SEVERE] Stack: 2013-03-13 18:33:21 [SEVERE] ------------------------------ 2013-03-13 18:33:21 [SEVERE] Current Thread: DestroyJavaVM 2013-03-13 18:33:21 [SEVERE] PID: 20 | Alive: true | State: RUNNABLE 2013-03-13 18:33:21 [SEVERE] Stack: 2013-03-13 18:33:21 [SEVERE] ------------------------------ 2013-03-13 18:33:21 [SEVERE] Current Thread: Dynmap Render Thread 2013-03-13 18:33:21 [SEVERE] PID: 48 | Alive: true | State: RUNNABLE 2013-03-13 18:33:21 [SEVERE] Stack: 2013-03-13 18:33:21 [SEVERE] sun.misc.Unsafe.park(Native Method) 2013-03-13 18:33:25 [SEVERE] java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source) 2013-03-13 18:33:25 [SEVERE] java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source) 2013-03-13 18:33:25 [SEVERE] java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source) 2013-03-13 18:33:25 [SEVERE] java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source) 2013-03-13 18:33:30 [INFO] [Permissions] Disabling Permissions v3.1.6 2013-03-13 18:33:30 [SEVERE] java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source) 2013-03-13 18:33:33 [SEVERE] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 2013-03-13 18:33:33 [SEVERE] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 2013-03-13 18:33:33 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:33 [SEVERE] ------------------------------ 2013-03-13 18:33:33 [INFO] WEPIF: GroupManager detected! Using GroupManager for permissions. 2013-03-13 18:33:33 [SEVERE] Current Thread: File IO Thread 2013-03-13 18:33:33 [INFO] Fake Permissions version 3.1.6 is disabled! 2013-03-13 18:33:33 [SEVERE] PID: 69 | Alive: true | State: RUNNABLE 2013-03-13 18:33:33 [SEVERE] Stack: 2013-03-13 18:33:33 [SEVERE] java.util.zip.DeflaterOutputStream.write(Unknown Source) 2013-03-13 18:33:33 [SEVERE] java.io.DataOutputStream.writeByte(Unknown Source) 2013-03-13 18:33:33 [SEVERE] cd.a(NBTBase.java:107) 2013-03-13 18:33:37 [INFO] [WorldEdit] Disabling WorldEdit v1372-48c3c3e 2013-03-13 18:33:38 [SEVERE] bq.a(NBTTagCompound.java:41) 2013-03-13 18:33:43 [SEVERE] by.a(NBTTagList.java:51) 2013-03-13 18:33:50 [SEVERE] cd.a(NBTBase.java:112) 2013-03-13 18:33:50 [SEVERE] bq.a(NBTTagCompound.java:41) 2013-03-13 18:33:50 [SEVERE] cd.a(NBTBase.java:112) 2013-03-13 18:33:50 [SEVERE] bq.a(NBTTagCompound.java:41) 2013-03-13 18:33:50 [SEVERE] cd.a(NBTBase.java:112) 2013-03-13 18:33:50 [SEVERE] ca.a(CompressedStreamTools.java:140) 2013-03-13 18:33:50 [SEVERE] aam.a(AnvilChunkLoader.java:274) 2013-03-13 18:33:50 [SEVERE] aam.c(AnvilChunkLoader.java:260) 2013-03-13 18:33:50 [SEVERE] aiw.b(ThreadedFileIOBase.java:39) 2013-03-13 18:33:50 [SEVERE] aiw.run(ThreadedFileIOBase.java:27) 2013-03-13 18:33:50 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:50 [SEVERE] ------------------------------ 2013-03-13 18:33:50 [SEVERE] Current Thread: RMI TCP Accept-0 2013-03-13 18:33:50 [SEVERE] PID: 13 | Alive: true | State: RUNNABLE 2013-03-13 18:33:50 [SEVERE] Stack: 2013-03-13 18:33:50 [SEVERE] java.net.DualStackPlainSocketImpl.accept0(Native Method) 2013-03-13 18:33:50 [SEVERE] java.net.DualStackPlainSocketImpl.socketAccept(Unknown Source) 2013-03-13 18:33:50 [SEVERE] java.net.AbstractPlainSocketImpl.accept(Unknown Source) 2013-03-13 18:33:50 [SEVERE] java.net.PlainSocketImpl.accept(Unknown Source) 2013-03-13 18:33:50 [SEVERE] java.net.ServerSocket.implAccept(Unknown Source) 2013-03-13 18:33:50 [SEVERE] java.net.ServerSocket.accept(Unknown Source) 2013-03-13 18:33:50 [INFO] [GroupManager] Disabling GroupManager v2.0 (2.10.1) (Phoenix) 2013-03-13 18:33:50 [SEVERE] sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(Unknown Source) 2013-03-13 18:33:50 [SEVERE] sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(Unknown Source) 2013-03-13 18:33:50 [SEVERE] sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(Unknown Source) 2013-03-13 18:33:50 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:50 [SEVERE] ------------------------------ 2013-03-13 18:33:50 [SEVERE] Current Thread: Attach Listener 2013-03-13 18:33:50 [SEVERE] PID: 6 | Alive: true | State: RUNNABLE 2013-03-13 18:33:50 [SEVERE] Stack: 2013-03-13 18:33:50 [SEVERE] ------------------------------ 2013-03-13 18:33:50 [SEVERE] Current Thread: pool-2-thread-1 2013-03-13 18:33:50 [SEVERE] PID: 44 | Alive: true | State: TIMED_WAITING 2013-03-13 18:33:50 [SEVERE] Stack: 2013-03-13 18:33:50 [SEVERE] sun.misc.Unsafe.park(Native Method) 2013-03-13 18:33:50 [SEVERE] java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source) 2013-03-13 18:33:50 [SEVERE] java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source) 2013-03-13 18:33:54 [SEVERE] java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source) 2013-03-13 18:33:54 [SEVERE] java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source) 2013-03-13 18:33:54 [INFO] GroupManager version 2.0 (2.10.1) (Phoenix) is disabled! 2013-03-13 18:33:54 [SEVERE] java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source) 2013-03-13 18:33:54 [SEVERE] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 2013-03-13 18:33:54 [SEVERE] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 2013-03-13 18:33:54 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:54 [SEVERE] ------------------------------ 2013-03-13 18:33:54 [SEVERE] Current Thread: Snooper Timer 2013-03-13 18:33:54 [SEVERE] PID: 15 | Alive: true | State: TIMED_WAITING 2013-03-13 18:33:54 [SEVERE] Stack: 2013-03-13 18:33:54 [SEVERE] java.lang.Object.wait(Native Method) 2013-03-13 18:33:54 [SEVERE] java.util.TimerThread.mainLoop(Unknown Source) 2013-03-13 18:33:54 [SEVERE] java.util.TimerThread.run(Unknown Source) 2013-03-13 18:33:54 [SEVERE] ------------------------------ 2013-03-13 18:33:54 [INFO] [PerformanceMonitor] Disabling PerformanceMonitor v1.7.0 2013-03-13 18:33:54 [SEVERE] Current Thread: Thread-5 2013-03-13 18:33:54 [SEVERE] PID: 19 | Alive: true | State: TIMED_WAITING 2013-03-13 18:33:54 [INFO] [PerformanceMonitor 1.7.0] Plugin disabled! 2013-03-13 18:33:54 [SEVERE] Stack: 2013-03-13 18:33:54 [SEVERE] java.lang.Thread.sleep(Native Method) 2013-03-13 18:33:54 [SEVERE] hp.run(DedicatedServerSleepThread.java:23) 2013-03-13 18:33:54 [SEVERE] ------------------------------ 2013-03-13 18:33:54 [SEVERE] Current Thread: pool-4-thread-4 2013-03-13 18:33:54 [SEVERE] PID: 80 | Alive: true | State: TIMED_WAITING 2013-03-13 18:33:54 [SEVERE] Stack: 2013-03-13 18:33:54 [SEVERE] java.util.Arrays.copyOfRange(Unknown Source) 2013-03-13 18:33:54 [SEVERE] java.lang.String.(Unknown Source) 2013-03-13 18:33:54 [SEVERE] java.lang.String.substring(Unknown Source) 2013-03-13 18:33:54 [SEVERE] org.dynmap.web.HandlerRouter.handle(Unknown Source) 2013-03-13 18:33:54 [SEVERE] org.dynmap.web.FilterHandler$1.doFilter(Unknown Source) 2013-03-13 18:33:55 [SEVERE] org.dynmap.web.CustomHeaderFilter.doFilter(Unknown Source) 2013-03-13 18:33:55 [SEVERE] org.dynmap.web.FilterHandler$1.doFilter(Unknown Source) 2013-03-13 18:33:55 [INFO] Saving players 2013-03-13 18:33:59 [SEVERE] org.dynmap.web.BanIPFilter.doFilter(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.web.FilterHandler$1.doFilter(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.web.FilterHandler.handle(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.handler.HandlerList.handle(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.handler.HandlerWrapper.handle(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.Server.handle(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.AbstractHttpConnection.handleRequest(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.AbstractHttpConnection.headerComplete(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.http.HttpParser.parseNext(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.http.HttpParser.parseAvailable(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.AsyncHttpConnection.handle(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.io.nio.SelectChannelEndPoint.handle(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.io.nio.SelectChannelEndPoint$1.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] ------------------------------ 2013-03-13 18:33:59 [SEVERE] Current Thread: pool-4-thread-6 2013-03-13 18:33:59 [SEVERE] PID: 82 | Alive: true | State: RUNNABLE 2013-03-13 18:33:59 [SEVERE] Stack: 2013-03-13 18:33:59 [SEVERE] sun.misc.Unsafe.park(Native Method) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.LinkedBlockingQueue.poll(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] ------------------------------ 2013-03-13 18:33:59 [SEVERE] Current Thread: Immibis Core background task 2013-03-13 18:33:59 [SEVERE] PID: 22 | Alive: false | State: TERMINATED 2013-03-13 18:33:59 [SEVERE] Stack: 2013-03-13 18:33:59 [SEVERE] java.io.PrintStream.write(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.io.PrintStream.print(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.lang.ThreadGroup.uncaughtException(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.lang.ThreadGroup.uncaughtException(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.lang.Thread.dispatchUncaughtException(Unknown Source) 2013-03-13 18:33:59 [SEVERE] ------------------------------ 2013-03-13 18:33:59 [SEVERE] Current Thread: Thread-11 2013-03-13 18:33:59 [SEVERE] PID: 29 | Alive: true | State: TIMED_WAITING 2013-03-13 18:33:59 [SEVERE] Stack: 2013-03-13 18:33:59 [SEVERE] java.lang.Thread.sleep(Native Method) 2013-03-13 18:33:59 [SEVERE] appeng.common.VersionChecker.run(VersionChecker.java:37) 2013-03-13 18:33:59 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] ------------------------------ 2013-03-13 18:33:59 [SEVERE] Current Thread: Spigot Watchdog Thread 2013-03-13 18:33:59 [SEVERE] PID: 35 | Alive: true | State: RUNNABLE 2013-03-13 18:33:59 [SEVERE] Stack: 2013-03-13 18:33:59 [SEVERE] java.lang.Thread.dumpThreads(Native Method) 2013-03-13 18:33:59 [SEVERE] java.lang.Thread.getAllStackTraces(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.bukkit.craftbukkit.v1_4_R1.util.WatchdogThread.run(WatchdogThread.java:60) 2013-03-13 18:33:59 [SEVERE] ------------------------------ 2013-03-13 18:33:59 [SEVERE] Current Thread: pool-4-thread-2 Acceptor0 SelectChannelConnector@0.0.0.0:8125 2013-03-13 18:33:59 [SEVERE] PID: 54 | Alive: true | State: RUNNABLE 2013-03-13 18:33:59 [SEVERE] Stack: 2013-03-13 18:33:59 [SEVERE] sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) 2013-03-13 18:33:59 [SEVERE] sun.nio.ch.ServerSocketChannelImpl.accept(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.nio.SelectChannelConnector.accept(Unknown Source) 2013-03-13 18:33:59 [SEVERE] org.dynmap.jetty.server.AbstractConnector$Acceptor.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:33:59 [SEVERE] ------------------------------ 2013-03-13 18:33:59 [SEVERE] Current Thread: Thread-6 2013-03-13 18:33:59 [SEVERE] PID: 21 | Alive: true | State: RUNNABLE 2013-03-13 18:33:59 [SEVERE] Stack: 2013-03-13 18:33:59 [SEVERE] java.io.FileInputStream.readBytes(Native Method) 2013-03-13 18:33:59 [SEVERE] java.io.FileInputStream.read(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.io.BufferedInputStream.fill(Unknown Source) 2013-03-13 18:33:59 [SEVERE] java.io.BufferedInputStream.read(Unknown Source) 2013-03-13 18:34:03 [SEVERE] java.io.FilterInputStream.read(Unknown Source) 2013-03-13 18:34:03 [SEVERE] org.bukkit.craftbukkit.libs.jline.console.ConsoleReader$1.read(ConsoleReader.java:167) 2013-03-13 18:34:03 [SEVERE] org.bukkit.craftbukkit.libs.jline.internal.InputStreamReader.read(InputStreamReader.java:267) 2013-03-13 18:34:03 [SEVERE] org.bukkit.craftbukkit.libs.jline.internal.InputStreamReader.read(InputStreamReader.java:204) 2013-03-13 18:34:03 [INFO] Unloading Player: Xathras420 2013-03-13 18:34:03 [SEVERE] org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readCharacter(ConsoleReader.java:995) 2013-03-13 18:34:03 [SEVERE] org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readLineSimple(ConsoleReader.java:1506) 2013-03-13 18:34:03 [SEVERE] org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readLine(ConsoleReader.java:1153) 2013-03-13 18:34:03 [SEVERE] org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readLine(ConsoleReader.java:1117) 2013-03-13 18:34:03 [SEVERE] org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readLine(ConsoleReader.java:1105) 2013-03-13 18:34:03 [SEVERE] hq.run(DedicatedServerCommandThread.java:41) 2013-03-13 18:34:03 [SEVERE] ------------------------------ 2013-03-13 18:34:03 [SEVERE] Current Thread: pool-4-thread-3 2013-03-13 18:34:03 [SEVERE] PID: 79 | Alive: true | State: TIMED_WAITING 2013-03-13 18:34:03 [SEVERE] Stack: 2013-03-13 18:34:03 [SEVERE] sun.misc.Unsafe.park(Native Method) 2013-03-13 18:34:03 [SEVERE] java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source) 2013-03-13 18:34:03 [SEVERE] java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source) 2013-03-13 18:34:03 [SEVERE] java.util.concurrent.LinkedBlockingQueue.poll(Unknown Source) 2013-03-13 18:34:08 [INFO] Saving worlds 2013-03-13 18:34:08 [SEVERE] java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source) 2013-03-13 18:34:08 [INFO] Saving chunks for level 'world'/Overworld 2013-03-13 18:34:08 [SEVERE] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 2013-03-13 18:34:08 [SEVERE] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 2013-03-13 18:34:12 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:34:12 [SEVERE] ------------------------------ 2013-03-13 18:34:12 [SEVERE] Current Thread: HashSessionScavenger-0 2013-03-13 18:34:12 [SEVERE] PID: 52 | Alive: true | State: TIMED_WAITING 2013-03-13 18:34:12 [SEVERE] Stack: 2013-03-13 18:34:12 [SEVERE] java.lang.Object.wait(Native Method) 2013-03-13 18:34:12 [SEVERE] java.util.TimerThread.mainLoop(Unknown Source) 2013-03-13 18:34:12 [SEVERE] java.util.TimerThread.run(Unknown Source) 2013-03-13 18:34:12 [SEVERE] ------------------------------ 2013-03-13 18:34:12 [SEVERE] Current Thread: Chunk I/O Executor Thread-1 2013-03-13 18:34:12 [SEVERE] PID: 78 | Alive: true | State: RUNNABLE 2013-03-13 18:34:12 [SEVERE] Stack: 2013-03-13 18:34:12 [SEVERE] cd.a(NBTBase.java:128) 2013-03-13 18:34:12 [SEVERE] cd.b(NBTBase.java:83) 2013-03-13 18:34:12 [SEVERE] bq.a(NBTTagCompound.java:55) 2013-03-13 18:34:12 [SEVERE] by.a(NBTTagList.java:67) 2013-03-13 18:34:12 [SEVERE] cd.b(NBTBase.java:87) 2013-03-13 18:34:12 [SEVERE] bq.a(NBTTagCompound.java:55) 2013-03-13 18:34:12 [SEVERE] cd.b(NBTBase.java:87) 2013-03-13 18:34:12 [SEVERE] bq.a(NBTTagCompound.java:55) 2013-03-13 18:34:12 [SEVERE] by.a(NBTTagList.java:67) 2013-03-13 18:34:12 [SEVERE] cd.b(NBTBase.java:87) 2013-03-13 18:34:12 [SEVERE] bq.a(NBTTagCompound.java:55) 2013-03-13 18:34:12 [SEVERE] by.a(NBTTagList.java:67) 2013-03-13 18:34:12 [SEVERE] cd.b(NBTBase.java:87) 2013-03-13 18:34:12 [SEVERE] bq.a(NBTTagCompound.java:55) 2013-03-13 18:34:12 [SEVERE] cd.b(NBTBase.java:87) 2013-03-13 18:34:12 [SEVERE] bq.a(NBTTagCompound.java:55) 2013-03-13 18:34:12 [SEVERE] cd.b(NBTBase.java:87) 2013-03-13 18:34:12 [SEVERE] ca.a(CompressedStreamTools.java:126) 2013-03-13 18:34:15 [SEVERE] aam.loadChunk__Async_CB(AnvilChunkLoader.java:124) 2013-03-13 18:34:15 [SEVERE] org.bukkit.craftbukkit.v1_4_R1.chunkio.ChunkIOProvider.callStage1(ChunkIOProvider.java:16) 2013-03-13 18:34:15 [SEVERE] org.bukkit.craftbukkit.v1_4_R1.chunkio.ChunkIOProvider.callStage1(ChunkIOProvider.java:10) 2013-03-13 18:34:18 [SEVERE] org.bukkit.craftbukkit.v1_4_R1.util.AsynchronousExecutor$Task.init(AsynchronousExecutor.java:150) 2013-03-13 18:35:04 [SEVERE] org.bukkit.craftbukkit.v1_4_R1.util.AsynchronousExecutor$Task.initAsync(AsynchronousExecutor.java:95) 2013-03-13 18:35:04 [SEVERE] org.bukkit.craftbukkit.v1_4_R1.util.AsynchronousExecutor$Task.run(AsynchronousExecutor.java:85) 2013-03-13 18:35:04 [SEVERE] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 2013-03-13 18:35:00 [SEVERE] java.lang.OutOfMemoryError: Java heap space 2013-03-13 18:35:04 [SEVERE] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 2013-03-13 18:35:12 [SEVERE] java.lang.Thread.run(Unknown Source) 2013-03-13 18:35:12 [SEVERE] ------------------------------ 2013-03-13 18:35:12 [SEVERE] Current Thread: Listen thread 2013-03-13 18:35:17 [SEVERE] PID: 34 | Alive: false | State: TERMINATED 2013-03-13 18:35:24 [SEVERE] Stack: 2013-03-13 18:35:24 [SEVERE] java.util.logging.StreamHandler.publish(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.util.logging.ConsoleHandler.publish(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.util.logging.Logger.log(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.util.logging.Logger.doLog(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.util.logging.Logger.logp(Unknown Source) 2013-03-13 18:35:24 [SEVERE] org.bukkit.craftbukkit.v1_4_R1.LoggerOutputStream.flush(LoggerOutputStream.java:27) 2013-03-13 18:35:24 [SEVERE] java.io.PrintStream.write(Unknown Source) 2013-03-13 18:35:24 [SEVERE] sun.nio.cs.StreamEncoder.writeBytes(Unknown Source) 2013-03-13 18:35:24 [SEVERE] sun.nio.cs.StreamEncoder.implWrite(Unknown Source) 2013-03-13 18:35:24 [SEVERE] sun.nio.cs.StreamEncoder.write(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.io.OutputStreamWriter.write(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.io.BufferedWriter.flushBuffer(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.io.PrintStream.write(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.io.PrintStream.print(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.lang.ThreadGroup.uncaughtException(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.lang.ThreadGroup.uncaughtException(Unknown Source) 2013-03-13 18:35:24 [SEVERE] java.lang.Thread.dispatchUncaughtException(Unknown Source) 2013-03-13 18:35:24 [SEVERE] ------------------------------ 2013-03-13 18:35:24 [SEVERE] Current Thread: Connection #14 read thread 2013-03-13 18:35:24 [SEVERE] PID: 307 | Alive: true | State: TIMED_WAITING 2013-03-13 18:35:24 [SEVERE] Stack: 2013-03-13 18:35:24 [SEVERE] java.lang.Thread.sleep(Native Method) 2013-03-13 18:35:24 [SEVERE] ch.run(TcpReaderThread.java:27) 2013-03-13 18:35:24 [SEVERE] ------------------------------ 2013-03-13 18:35:20 [INFO] Stopping server

Absolutist commented 11 years ago

I can confirm that my server is having the same problem, running the same exact modpack. I will run it to get a crash error to compare.

what other plugins are you using? (to compare against mine)

EDIT: seems I can't get a crash report because it's actually my server killing the process once it reaches maximum memory. I can confirm that while rendering the dynmap we eventually bottomed out and the process was killed. As soon as I stop rendering/uninstall dynmap, problem solved.

EDIT #2: I am actually using build #244 (latest recommended) not build #245.

WebMaka commented 11 years ago

That's how we discovered what was eating up memory - notice Dynmap seems to be the first to complain about heap space, discover memory leak, disable Dynmap, no more memory leak. And yes, it's MCPC's deadlock detector firing that ultimately kills the server because critical threads simply stop (sometimes without even throwing an error into console) when they run out of heap space.

As for the server layout, we're running FTB Ultimate 1.0.1 with the following extra mods installed alongside:

Forge:

Bukkit:

Absolutist commented 11 years ago

Ah, almost the same exact setup as me. Running FTB Ultimate 1.01 as well, with:

Forge:

Damage Indicators MCHerds

Bukkit:

Essentials EssentialsXMPP Essentials GeoIP GroupManager WorldEdit WorldGuard WorldBorder RestartEvolution (basic automatic restart plugin) AutoSaveWorld (does exactly what it says) Vote GriefPrevention

A bit more heavy on the plugins side, but a lot less mods.

WebMaka commented 11 years ago

We have a few more Bukkit mods (WorldBorder, WorldGuard, Lockette, HawkEye) but they're disabled on our test server. ;-)

At least there's a consistency though regarding FTB Ultimate 1.0.1 and Dynmap. I love Dynmap and the thought of having to do without makes me a sadpanda, so hopefully the culprit code is easy to find...

Absolutist commented 11 years ago

I couldn't agree more!

Haruchai commented 11 years ago

I'm not getting that error with the following installed:

FTB/Ultimate 1.0.1 (standard FTB issue...nothing extra, nothing disabled) MCPC+ 1.4.7-R1.1-SNAPSHOT-f534-246 Dynmap v1.6-621 (MCPC+, bukkit, tekkit version) WorldGuard WorldEdit WorldBorder.

I am getting the following error, although it doesn't crash the server:

5:06:05 PM CONSOLE: [SEVERE] Error occurred while enabling dynmap v1.6-621 (Is it up to date?) 5:06:05 PM CONSOLE: a block mapping 5:06:05 PM CONSOLE: "", line 57, column 7: 5:06:05 PM CONSOLE: x: 0 5:06:05 PM CONSOLE: ^ 5:06:05 PM CONSOLE: end>, but found BlockEntry 5:06:05 PM CONSOLE: "", line 69, column 7: 5:06:05 PM CONSOLE: - class: org.dynmap.hdmap.HDMap 5:06:05 PM CONSOLE: ^

Absolutist commented 11 years ago

@Haruchai isn't that the dev version of dynmap? That one wouldn't work for me either.

Haruchai commented 11 years ago

@Absolutist Yes, but I had read somewhere (can't remember where) that it ran much smoother than 1.5. I had the 1.6 Forge version running fine on the ftbserver.jar file that came with Ultimate, but I need to switch to MCPC+ so I am running a test server with the setup I mentioned. So far, that error seems to be the only thing standing in the way of a smooth ride.

Absolutist commented 11 years ago

Ah, I see. If you get it working properly let me know :)


From: Haruchai Sent: 3/16/2013 7:00 PM To: webbukkit/dynmap Cc: Absolutist Subject: Re: [dynmap] Memory leak with Dynmap 1.5 (Bukkit) when used with MCPC+ 1.4.7-R1.1 b245 and FTB/Ultimate 1.01 (#1191)

@Absolutist Yes, but I had read somewhere (can't remember where) that it ran much smoother than 1.5. I had the 1.6 Forge version running fine on the ftbserver.jar file that came with Ultimate, but I need to switch to MCPC+ so I am running a test server with the setup I mentioned. So far, that error seems to be the only thing standing in the way of a smooth ride.


Reply to this email directly or view it on GitHub: https://github.com/webbukkit/dynmap/issues/1191#issuecomment-15013798

Haruchai commented 11 years ago

@Absolutist Alrighty. Took care of the error (my fault) and everything seems to be running fine. I've got a fullrender running now and no errors. I'll let you know if something wacky happens, but it appears to be working quite well.

Absolutist commented 11 years ago

awesome! glad to hear. Maybe I'll be able to reinstall it sometime soon. How did you get rid of the error? I may install it and see if i can get it to crash again.

Haruchai commented 11 years ago

Somehow the "center" line was uncommented in the Hires template. I wanted to change the center of the map to x:0 z:0 anyway, so I uncommented the lines after "center". Now the center is accurate and the world spawn is labeled. I'm almost done with a 2k radius round world test with Cave map disabled. Looks great so far.

Haruchai commented 11 years ago

@Absolutist Ok, seems to be working, but not as smooth as I' like to see it. (Although this problem may not be entirely Dynmap's fault.)

A 2k radius, round, flat world render completed with only one 'out of memory' error causing an automatic restart through McMyAdmin. However, the surface render is a real pain. We have 2G allocated on our host server, so I set up the same on my home machine. Their servers run Windows Server 2008, so maybe it will handle Java memory better than W7 x64 P (i7). Regardless, after rendering 700-800 tiles, memory fills and the server doinks with heap and out of memory errors. McMA is not able to do an automatic restart, so it's a manual process. Maybe it's all java, or a combination of things, but the memory usage jumps every time 100 tiles are rendered. Once it hits 100% of the allocation the next time 100 tiles are rendered...boom. Tweaking the config file to slow down the rendering process only prolongs the inevitable as it takes the same number of tiles rendered to cause the shut down regardless of how fast/slow they are rendered.

Haruchai commented 11 years ago

@Absolutist Ok, will finish for now by stating that trying to render a surface map is a bust. The memory leak is too big of an issue as the server shuts down every 15-20 minutes. I've tried several .bat configuration changes, but none has made any difference. If you want to keep a flat map only, you're ok. But it would take a day or two to render a decent-sized surface map and by the time it finished, everyone on the server would have left or thrown rotten veggies at you. Will try the next release and report back.

Absolutist commented 11 years ago

@Haruchai huh, alright. My server has 9GB dedicated to it, so I may try a flat map render. What modifications do i need to make to the file?

mikeprimm commented 11 years ago

Guys - give the latest development build a try. It looks like MCPC+'s implementation of some of the Bukkit chunk APis isn't quit working properly - I've recoded the code to use an alternate approach (that isn't as good, performance-wise, but should avoid the problem with failing to fully unload chunks). In any case, I was able to produce the OOM easily with the default FTB-Ultimate + latest MCPC+ before the change, and haven't hit it since making the change.

Absolutist commented 11 years ago

@mikeprimm awesome! I will give it a shot right now.

Absolutist commented 11 years ago

@mikeprimm quick question, is the new dev build up on the minecraft forums thread? or is that the old dev build

EDIT: nevermind. it is :)

mikeprimm commented 11 years ago

Yep - the dev build link is to the 'head' build (meaning the head of the library, or latest code). It gets updated every time I push to the library.

Absolutist commented 11 years ago

So far so good :D you have made a lot of people very happy

WebMaka commented 11 years ago

@mikeprimm Should one of us mention the chunk issue over on the MCPC github? If they've got a chunk-handling bug it'd make everyone's lives easier if they know about it. ;-)

Absolutist commented 11 years ago

Just had another OOM error, it took a good 30 minutes of rendering to reach it though. Nearly done with a 6000 radius render.

EDIT: two more crashes, one at 17 minutes and the other at 6 minutes :(

mikeprimm commented 11 years ago

I've got a thought - can't test it now, but try setting 'maxchunkspertick' to 90

Absolutist commented 11 years ago

in which config file?

mikeprimm commented 11 years ago

configuration.txt

Absolutist commented 11 years ago

alright. i'll test it when i get out of work (2-3 more hours)

Haruchai commented 11 years ago

Are there versions beyond the ones I used yesterday? MCPC+ 1.4.7-R1.1-SNAPSHOT-f534-246 Dynmap v1.6-621 (MCPC+, bukkit, tekkit version)

Here's what my final config looked like before I stopped, although anything I tried didn't make a lot of difference.

Config: tiles-rendered-at-once: 1 renderinterval: 1 renderacceleratethreshold: 60 timesliceinterval: 1.0 maxchunkspertick: 90 progressloginterval: 100

I tried several different tweaks to my start.bat file, here was the last one I tried. java -Xms512M -Xmx2048M -XX:MaxPermSize=256m -Xss512k -jar FTB-Beta-A.jar (the MCPC+ server file name was changed so MCMA could recognize it)

Even though changing the parameters slowed down the process, the memory leak correlated to the number of tiles rendered, not the amount of time to render them. At least, that was my experience.

Thanks for trying to help!

Absolutist commented 11 years ago

Hmm, that would make sense with how the time until leakage decreased over time with my test... right?

mikeprimm commented 11 years ago

You need at least 1.6-622 for the change I made to even be present - without that, the maxchunkspertick value change would not matter.

Absolutist commented 11 years ago

Stupid question, but how can I tell which version I have?

mikeprimm commented 11 years ago

It'll be logged in the server.log during startup

Haruchai commented 11 years ago

Ok, I'll load the latest and give it a go.

Haruchai commented 11 years ago

Ok, I'll try not to muddle everything up....but I can't see any change from the previous version.

--->From server log:

2013-03-18 16:13:05 [INFO] [dynmap] Web server started on address 0.0.0.0:8123 2013-03-18 16:13:05 [INFO] [dynmap] version 1.6-622 is enabled - core version 1.6-1600 2013-03-18 16:13:05 [INFO] [dynmap] Loaded 2 maps of world 'Fiddlesticks'. 2013-03-18 16:13:05 [INFO] [dynmap] World 'world_twilightforest' disabled 2013-03-18 16:13:05 [INFO] [dynmap] Loaded 2 maps of world 'Fiddlesticks_the_end'. 2013-03-18 16:13:05 [INFO] [dynmap] Loaded 2 maps of world 'Fiddlesticks_nether'. 2013-03-18 16:13:05 [INFO] [dynmap] Enabled 2013-03-18 16:13:05 [INFO] [WorldBorder] Enabling WorldBorder v1.6.1

I used the same configs as what I mentioned earlier.

As you will see in this progress, every 100 tiles will cause a brief spike in CPU use and a corresponding increase in RAM.

dynmap 1

Until it gets maxed.

dynmap 5

Then this:

dynmap 7

which continues:

dynmap 6

Sorry for the links, hope this helps.

Absolutist commented 11 years ago

will be testing in about 30-40 minutes. I'd like to point out that our server has 9 GB allocated to it and is still (as far as i can tell) running out of memory fairly quickly.

Absolutist commented 11 years ago

Okay, didn't run out of memory while testing - although the test only lasted about 15 minutes due to xycraft and dynmap clashing apparently. I'll post the crash log.

http://pastebin.com/4PGfNWrk

mikeprimm commented 11 years ago

That doesn't look like a conflict with us - I honestly think there is an issue with XyCraft and the async chunk loading pulled in to MCPC+ from CB/Spigot. XyCraft is hooking the chunk loading process, which in a standard vanilla server is always run on the server thead - but with the CB/Spigot async chunk loading, that isn't true.

On the original issue, give the latest dev build (623 or later) a try with the normal setting (maxchunkspertick: 200).

Haruchai commented 11 years ago

@mikeprimm On it. Give me a few.

Absolutist commented 11 years ago

@mikeprimm hmm, weird. that crash only came up when i was running a render with dynmap. otherwise it seems to perform fine.

mikeprimm commented 11 years ago

Well, we cause lots of chunk load/unload traffic - doesn't mean we cause the problem, just make the odds of seeing it better.

Absolutist commented 11 years ago

Ah, I understand now. And i agree that xycraft is a very buggy mod in itself - we've seen it conflict with many other mods/plugins so far. I wouldn't mind disabling it but i know some people on my server wouldn't be too fond of that.

Haruchai commented 11 years ago

heh...have you ever written Soaryn (sp?)? he can be a bit cranky about his mod.

mikeprimm commented 11 years ago

Thing with what I'm seeing is that it might be a consequence of some of the CB updates that have been pulled into MCPC+, versus a problem with XyCraft on vanilla+forge (which I assume is what he actually supports). Could be wrong, though, as I don't have the XyCraft source itself.

Haruchai commented 11 years ago

I'm watching this tic....(drumroll)... there is no doubt 623 is much improved!

Haruchai commented 11 years ago

it just threw this, but continues to render. Memory is either very slowly increasing or not at all. I would have already maxed by this point on the earlier versions:

9:54:23 PM CONSOLE: [INFO] Full render of map 'surface' of 'Fiddlesticks' in progress - 8600 tiles rendered (263.79 msec/tile, 48.47 msec per render) 9:55:27 PM CONSOLE: [INFO] Attempted to place a tile entity (anm@4f68a7e4) at 260,29,2675 (AIR) where there was no entity tile! 9:55:27 PM CONSOLE: [INFO] Chunk coordinates: 256,2672 9:55:27 PM CONSOLE: [SEVERE] java.lang.Exception 9:55:27 PM CONSOLE: [SEVERE] at zz.a(Chunk.java:1086) 9:55:27 PM CONSOLE: [SEVERE] at zz.a(Chunk.java:1050) 9:55:27 PM CONSOLE: [SEVERE] at aam.loadEntities(AnvilChunkLoader.java:509) 9:55:27 PM CONSOLE: [SEVERE] at aam.a(AnvilChunkLoader.java:77) 9:55:27 PM CONSOLE: [SEVERE] at im.f(ChunkProviderServer.java:269) 9:55:27 PM CONSOLE: [SEVERE] at org.bukkit.craftbukkit.v1_4_R1.CraftWorld.loadChunk(CraftWorld.java:332) 9:55:27 PM CONSOLE: [SEVERE] at org.dynmap.bukkit.NewMapChunkCache.loadChunks(Unknown Source) 9:55:27 PM CONSOLE: [SEVERE] at org.dynmap.bukkit.DynmapPlugin$BukkitServer$7.call(Unknown Source) 9:55:27 PM CONSOLE: [SEVERE] at org.dynmap.bukkit.DynmapPlugin$BukkitServer$7.call(Unknown Source) 9:55:27 PM CONSOLE: [SEVERE] at org.bukkit.craftbukkit.v1_4_R1.scheduler.CraftFuture.run(CraftFuture.java:89) 9:55:27 PM CONSOLE: [SEVERE] at org.bukkit.craftbukkit.v1_4_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:344) 9:55:27 PM CONSOLE: [SEVERE] at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:899) 9:55:27 PM CONSOLE: [SEVERE] at ho.r(DedicatedServer.java:309) 9:55:27 PM CONSOLE: [SEVERE] at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:857) 9:55:27 PM CONSOLE: [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:744) 9:55:27 PM CONSOLE: [SEVERE] at fy.run(ThreadMinecraftServer.java:16) 9:56:03 PM CONSOLE: [INFO] Full render of map 'surface' of 'Fiddlesticks' in progress - 8700 tiles rendered (262.77 msec/tile, 46.93 msec per render)

Haruchai commented 11 years ago

I'm thinking that error (just threw another one) is due to WorldBorder missing a tile....not for sure though.

Haruchai commented 11 years ago

at 1700 tiles rendered and memory is maxed, but surprisingly it's still chugging along.

odd....looking at the surface webmap....it is rendering way across the WorldBorder margins. It's still rendering inside the radius, but also has taken off to the SW by over a thousand blocks.

Haruchai commented 11 years ago

Ok, finally tanked with OOM/Heap space error after rendering 2400 tiles. This is about three times longer than previously. Here's how I had it configured:

maxchunkspertick: 200 timesliceinterval: 1.0 progressloginterval: 100 -Xms512M -Xmx2048M -XX:MaxPermSize=256m -Xss512k (I'll try it again without the start.bat tweaks)

Haruchai commented 11 years ago

will wrap up tonight's biz with this:

Change configs to:

Maxchunkspertick: 200 timesliceinterval:0.0 progressioninterval 100

Removed -XX:MaxPermSize=256m -Xss512k from start.bat

was able to render 12,300 files before OOM/Heap meltdown.

Thanks for working on this! Let me know if I can help in any way..

mikeprimm commented 11 years ago

If one of you guys has the chance, could you try the latest Forge version of Dynmap? It SHOULD work (can't say I've tested it recently), and seeing if it yields different results would narrow down the scope of the APIs that are working differently (specifically, we know this to be true - up until the changes yesterday, the Bukkit version running on MCPC+ did the same thing as it did on CB, but only the MCPC+ has issues with memory - the 20,000 folks running on CB or Spigot do not have those issues. The Forge version on 1.4.7 vanilla with Forge also is clean (with the FTB packs I've tested and others are using), so lets see if the problem tracks the use of the Bukkit APIs on MCPC+).

Absolutist commented 11 years ago

@mikeprimm last dev or last stable?