NoLagg

Version: 1.90.4 | CB 1.7.2
Quote from lenis0012:NoLagg has not been updated since 1.7.10, for more info, check BKCommonLib
Description
NoLagg is made out of multiple completely separate components which you can enable and disable freely. Together they offer:
- Send chunks more gracefully with lowered network stress and reduced processing spikes Read more...
- Remove entities, resend chunks in case of chunk holes and clean up server memory Read more...
- Examine server tick rate performance with deep view into per-tick processes of the server Read more...
- Stop a large amount of items from spawning and spawn at a later time to avoid frozen clients Read more...
- Stack items with a configurable per-world radius Read more...
- Fix lighting errors that cause clients to recalculate lighting (and thus lag) Read more...
- Keep track of server performance such as entities, tick rate, memory and more Read more...
- Fix various bugs the server has (Patches component)
- Schedule autosaves and force data to be written to disk to prevent data loss on server crash (Saving component)
- Limit the amount of entities allowed to spawn per world or globally Read more...
- Watch events closely to warn when plugins execute main-thread methods from another thread Read more...
- Show a detailed message explaining the cause for a server freeze (lock) [read more]
- New TNT execution algortithm that is not only more efficient, but also avoids server freezes Read more...
Important
When first installing NoLagg, open up config.yml and disable components you do not need. This is very important, as some components may conflict with other plugins you use, or may not function on the type of demand you have. If you get a warning message [Severe] followed up with a stack trace in the log, this has to do with the main thread not having responded within 10 seconds. The warning is NOT an error and is no bug, and not a bug related to NoLagg. To disable this feature, disable 'threadlocknotifier' in the config.yml. This feature is mainly intended to notify you what plugin is causing the server to freeze, may it ever happen. It is used to debug plugins in general, as they may get stuck for whatever reason. If NoLagg DOES show up in there, it is a bug you should report.
FAQ
Separating into jar files
NoLagg consists of multiple components you can individually enable and disable. Reasons for not publishing it as a separate jar file for every component can be read here. Please don't ask to separate the components, I will just link you to here.
Spigot server
Not all components are needed when you use the Spigot server. The ItemStacker, ItemBuffer, Spawn Limiter, Thread Checker and Thread Lock Notifier components are not needed, since Spigot has it's own implementations to deal with that. If you still wish to use one of these components, you can, but it's best to disable the Spigot alternative then.
The other components (such as TNT, Chunks, Lighting, Common, etc.) are not implemented in Spigot (yet?) and offer additional functionality.
PTweaks
Since people keep asking about this, I went ahead and compared the two plugins. I am not going to discuss which is better in functionality, I'm just going to state which features overlap and which do not. Both plugins offer a TNT-lag solving solution, feel free to choose which solution you like better. (the solutions are different) Both plugins also offer a way to change when and how chunks are saved, NoLagg adds to this that you can configure when the server writes data to disk. PTweaks offers a way of showing used memory, NoLagg Monitor too with a bit more information. Again, preference. Chunk Persistence is something PTweaks offers and NoLagg does not. Reason I excluded it from NoLagg is that the implementation used up more processing power than that it solved (I did have this for a while). If you want to give it a try, PTweaks is your answer. Monster Limiter is incorporated in NoLagg as well but then for all entities, and more options. ChunkEdits is a tricky one: NoLagg chunks does something similar, with the difference being that it also changes at what rate chunks are sent, which is the main feature NoLagg chunks offers. In addition, the ability to increase the amount of threads running to process chunk packets and the re-using of packet raw data offers some benefits PTweaks does not offer.
Then there are a lot of other features NoLagg has and PTweaks does not, such as examining server tick rate, item stacker, item buffer, fixing lighting, cleaning up server memory, resending chunks, removing entities on command and others (see description).
In short: Both plugins offer some overlapping features, and you need to pay close attention to the configuration of PTweaks and NoLagg and disable things that conflict. Having two TNT explosion altering plugins is going to have strange results, for example. Compare the functionality, decide, and enable in NoLagg what you do not want in PTweaks, and vice versa.
NoLagg showing up in error stack traces
The examine component inserts various hooks into the server to gather measurements. Specifically, you will find that the following lines show up now and then. These hook classes do absolutely nothing when not examining and can not be the cause for any issues, unless the stack trace ends there (first line after the exception shows this stack trace)
- org.timedbukkit.craftbukkit.*
- com.bergerkiller.bukkit.common.internal.ChunkProviderServerHook
Video
Here is a video by BlueDevonMovies (lenis0012):
Metrics
This plugin sends server count statistics to MCStats.org. You can (globally) opt out in the PluginMetrics/config.yml file.







-
View User Profile
-
Send Message
Posted Aug 30, 2012@definitelymaybe
The error is a bit rare, and only happens when two 'nodes' in the graph have the same processing time. It happens, pretty much never.
I also noticed that the saving bit had a very long spike (230 ms) when saving the world. It doesn't save very often, so that's not an issue, but if this gets out of hand, try to disable it:
NoLagg -> config.yml -> saving: -> autoSaveInterval: 99999999 (very large value)
The 'write to disk' works in another thread, so can't harm the tick rate. World saving is an exception.
-
View User Profile
-
Send Message
Posted Aug 30, 2012@HaoSs
I don't believe so. Go to the NoLagg Github page (https://github.com/bergerkiller/NoLagg/downloads) and grab 1.86 which is meant for CB 1.2.5-R4.
-
View User Profile
-
Send Message
Posted Aug 30, 2012will the versions made for 1.3.x will work with minecraft 1.2.5 ?
-
View User Profile
-
Send Message
Posted Aug 29, 2012@bergerkiller
strange 1.2.5, and most previous versions, ran very nicely. perhaps there is some issue with the ssd which needs addressing. thanks for looking at that for me.
i realise it probably depends on a lot but is there a ballpark ms the server should be spending on this?
-
View User Profile
-
Send Message
Posted Aug 29, 2012@definitelymaybe
Strangely it works on Java 6 but not on Java 7. (my Eclipse debugger runs on Java 6 and can open the file)
But I'll try to fix it nevertheless...
EDIT
In short:
- Saving the chunks (syncing) takes a fairly long time
- Loading chunks from file (as a result, chunk sending) takes very long
Disk access is clearly lacking, see if you can find a better hard drive to run the server on. (rate and response time is most important here)
-
View User Profile
-
Send Message
Posted Aug 29, 2012@bergerkiller
https://www.dropbox.com/s/7uk17o5z0wipzbg/2012_08_29-8_46_05.exam
thanks for your time
-
View User Profile
-
Send Message
Posted Aug 29, 2012@definitelymaybe
That error is annoying and is pretty hard to track down. Has to do with the sorting procedure while loading the file. For some reason two comparison functions contradict each other...
Can you upload the exam file? Then I can test locally to try and fix the error.
-
View User Profile
-
Send Message
Posted Aug 29, 2012having trouble tracking down the source of some lag. upon doing a /lag examine i am having mixed results. the exam files generated during periods of no lag open fine however when i do an exam during lag (tps 6 - 16) the resulting file will not open. i get the error 'failed to load file: java.lang.illegalargumentexception: comparison method violates its general contract!'
would it be possible for you to have a look at the effected exam file? perhaps you may find something interesting in it that i cannot. exam files from periods of no lagging seem to show the heaviest process working is chunk reading and writing.
server specs are: quad core xeon 32gb ram intel ssd on windows server 2008
-
View User Profile
-
Send Message
Posted Aug 29, 2012@bergerkiller
actually there IS 1.24 lib installed BUT there was ALSO 1.22 and 1.23 after i removed them it started working without problems
-
View User Profile
-
Send Message
Posted Aug 28, 2012@bergerkiller thank you so much! That was not the problem, but it helped me to solve it because I use linux and when I added new files, set wrongly owner file
Sorry for my english
-
View User Profile
-
Send Message
Posted Aug 28, 2012@thereallegend
'plugins/NoLagg/PermissionDefaults.yml (Permission denied)'
Looks like Java has no file access in the plugins folder. Check if there are no security rules involved for that folder, or if files or folders are read-only (properties). You may have to start the server as an Administrator, if that is possible. (not sure about that)
-
View User Profile
-
Send Message
Posted Aug 28, 2012I use bukitt 1.3.2 R0.1 and Nolagg 1.88.1. At server start i receve this error: http://pastebin.com/2K5esex1
-
View User Profile
-
Send Message
Posted Aug 28, 2012@bergerkiller
I'm thinking that spamming the console every n seconds might be an ideal solution as well if bkcommon.lib is missing or out of sync, or the bukkit version < 1.3.2. Irritate them into fixing their own problem.
-
View User Profile
-
Send Message
Posted Aug 28, 2012@GumbyDammit
You are right. It is time to put these FAQs in the biggest font available...
@eprimex
This is one of those FAQs. INSTALL BKCOMMONLIB. Please.
-
View User Profile
-
Send Message
Posted Aug 28, 2012@bergerkiller
I would suggest 48-pt font, in red, blinking. Perhaps underlined. Also, put in a spamchat msg telling them they have the wrong bukkit version every 5 seconds.
-
View User Profile
-
Send Message
Posted Aug 28, 2012instant crash after activating NoLagg. I am using 1.3.2-R0.1 (Build #02352)
http://pastebin.com/ZFM79LuA
Caused by: java.lang.NoSuchFieldError MAIN_THREAD
interesting
-
View User Profile
-
Send Message
Posted Aug 27, 2012@bladerik2
@FalactigNInga
Can you PLEASE read the download information or the top of this page? The latest version is for v1.3.2 R0.1, it does not work on v1.3.1 R2.0. (well, maybe limited)
Reason for skipping the RB: All other CraftBukkit fork server software started using 1.3.2 right away, I had no choice. Maintaining both old and new versions is undoable.
-
View User Profile
-
Send Message
Posted Aug 27, 2012hello, this is the expections i have after start local server just with nolagg v1.88.1 and bkcommonlib v. 1.2.4 - i try examine right after start :) other stuff throw no exception for me
-
View User Profile
-
Send Message
Posted Aug 27, 2012WHAT DID I DO WRONG??!?!??!
[SEVERE] java.lang.Exception: Field 'pending' does not exist in class file 'CraftScheduler'! 17:33:34 [SEVERE] at com.bergerkiller.bukkit.common.SafeField.<init>(SafeField.java:25) 17:33:34 [SEVERE] at com.bergerkiller.bukkit.nolagg.examine.SchedulerWatcher.<clinit>(SchedulerWatcher.java:24) 17:33:34 [SEVERE] at com.bergerkiller.bukkit.nolagg.examine.NoLaggExamine.onEnable(NoLaggExamine.java:30) 17:33:34 [SEVERE] at com.bergerkiller.bukkit.nolagg.NoLaggComponent.enable(NoLaggComponent.java:59) 17:33:34 [SEVERE] at com.bergerkiller.bukkit.nolagg.NoLagg.enable(NoLagg.java:49) 17:33:34 [SEVERE] at com.bergerkiller.bukkit.common.PluginBase.onEnable(PluginBase.java:179) 17:33:34 [SEVERE] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217) 17:33:34 [SEVERE] at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:365) 17:33:34 [SEVERE] at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381) 17:33:34 [SEVERE] at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:265) 17:33:34 [SEVERE] at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:247) 17:33:34 [SEVERE] at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:199) 17:33:34 [SEVERE] at net.minecraft.server.ServerConfigurationManagerAbstract.<init>(ServerConfigurationManagerAbstract.java:50) 17:33:34 [SEVERE] at net.minecraft.server.ServerConfigurationManager.<init>(SourceFile:11) 17:33:34 [SEVERE] at net.minecraft.server.DedicatedServer.init(DedicatedServer.java:105) 17:33:34 [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:378) 17:33:34 [SEVERE] at net.minecraft.server.ThreadServerApplication.run(SourceFile:539) 17:33:34 [SEVERE] java.lang.Exception: Field 'plugin' does not exist in class file 'CraftTask'! 17:33:34 [SEVERE] at com.bergerkiller.bukkit.common.SafeField.<init>(SafeField.java:25) 17:33:34 [SEVERE] at com.bergerkiller.bukkit.nolagg.examine.SchedulerWatcher.<clinit>(SchedulerWatcher.java:26) 17:33:34 [SEVERE] at com.bergerkiller.bukkit.nolagg.examine.NoLaggExamine.onEnable(NoLaggExamine.java:30) 17:33:34 [SEVERE] at com.bergerkiller.bukkit.nolagg.NoLaggComponent.enable(NoLaggComponent.java:59) 17:33:34 [SEVERE] at com.bergerkiller.bukkit.nolagg.NoLagg.enable(NoLagg.java:49) 17:33:34 [SEVERE] at com.bergerkiller.bukkit.common.PluginBase.onEnable(PluginBase.java:179) 17:33:34 [SEVERE] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217) 17:33:34 [SEVERE] at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:365) 17:33:34 [SEVERE] at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381) 17:33:34 [SEVERE] at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:265) 17:33:34 [SEVERE] at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:247) 17:33:34 [SEVERE] at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:199) 17:33:34 [SEVERE] at net.minecraft.server.ServerConfigurationManagerAbstract.<init>(ServerConfigurationManagerAbstract.java:50) 17:33:34 [SEVERE] at net.minecraft.server.ServerConfigurationManager.<init>(SourceFile:11) 17:33:34 [SEVERE] at net.minecraft.server.DedicatedServer.init(DedicatedServer.java:105) 17:33:34 [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:378) 17:33:34 [SEVERE] at net.minecraft.server.ThreadServerApplication.run(SourceFile:539) 17:33:34 [SEVERE] [NoLagg Examine] Failed to hook into craft scheduler: scheduled tasks will not be logged when examining! 17:33:34 [INFO] [NoLagg Saving] will write world data to all region files every 12000 ticks (10.0 minutes) 17:33:34 [INFO] NoLagg version 1.88 enabled! 17:33:34 [INFO] Preparing level "GalactiCraft" 17:33:34 [INFO] Preparing start region for level 0 (Seed: -44188819368151596) 17:33:34 [INFO] Preparing start region for level 1 (Seed: 193172122549722038) 17:33:35 [INFO] Preparing start region for level 2 (Seed: 193172122549722038) 17:33:35 [SEVERE] [NoLagg] Failed to initialize dummy world for manager replacement: 17:33:35 [SEVERE] java.lang.NoSuchFieldError: chunks 17:33:35 [SEVERE] at com.bergerkiller.bukkit.nolagg.chunks.antiloader.DummyChunkProvider.<init>(DummyChunkProvider.java:11) 17:33:35 [SEVERE] at com.bergerkiller.bukkit.nolagg.chunks.antiloader.DummyWorld.<init>(DummyWorld.java:75) 17:33:35 [SEVERE] at com.bergerkiller.bukkit.nolagg.chunks.antiloader.DummyWorld.<init>(DummyWorld.java:68) 17:33:35 [SEVERE] at com.bergerkiller.bukkit.nolagg.chunks.antiloader.DummyWorld.<clinit>(DummyWorld.java:33) 17:33:35 [SEVERE] at com.bergerkiller.bukkit.nolagg.chunks.antiloader.DummyPlayerManager.convert(DummyPlayerManager.java:25) 17:33:35 [SEVERE] at com.bergerkiller.bukkit.nolagg.chunks.antiloader.DummyPlayerManager.convert(DummyPlayerManager.java:31) 17:33:35 [SEVERE] at com.bergerkiller.bukkit.nolagg.chunks.NLCListener.onWorldLoad(NLCListener.java:44) 17:33:35 [SEVERE] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 17:33:35 [SEVERE] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 17:33:35 [SEVERE] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 17:33:35 [SEVERE] at java.lang.reflect.Method.invoke(Method.java:597) 17:33:35 [SEVERE] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:330) 17:33:35 [SEVERE] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) 17:33:35 [SEVERE] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) 17:33:35 [SEVERE] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) 17:33:35 [SEVERE] at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:271) 17:33:35 [SEVERE] at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:225) 17:33:35 [SEVERE] at net.minecraft.server.DedicatedServer.init(DedicatedServer.java:140) 17:33:35 [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:378) 17:33:35 [SEVERE] at net.minecraft.server.ThreadServerApplication.run(SourceFile:539)
-
View User Profile
-
Send Message
Posted Aug 27, 2012@Maxetto
"NoLagg is completly broken so, i will switch for something else!"
Why don't you demand your money back? Oh, that's right, bk works on this for free in his spare time, but you should feel free to tell him off and then stomp your feet as you look for another anti-lag plugin. Good job. You accuse his plugin of causing your problems, and you don't have the common sense to try even rudimentary troubleshooting steps, like disabling the plugin. You could write your own plugin, and then you could have the thrill of dealing with impatient, clueless, ungrateful whiners such as yourself.