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 Feb 16, 2012@Darkhand81
I get that too, until the first person logs in and then it produces that error
-
View User Profile
-
Send Message
Posted Feb 16, 2012@bergerkiller - the logging sounds great - very useful in plugin debugging to eliminate tick hogs. I tweaked various things and drawing improved somewhat, but still not as fast as I would prefer. But, I have to try it with NoLagg disabled to see the direct comparison - maybe it's actually better - I don't know.
-
View User Profile
-
Send Message
Posted Feb 16, 2012FYI: I added a ticket about cancelling the chunkunload event.
-
View User Profile
-
Send Message
Posted Feb 16, 2012@poiNt3D Check your compression thread (sending thread) count, if you use too many it adds infinitely waiting threads which are pretty much useless.
@imailyou I found only one possible reason it would fail, and that is that I send the lighting-fixed information of the blocks before they get changed. It might cause some weird issues, although I can't explain the infinitely placeable blocks.
-
View User Profile
-
Send Message
Posted Feb 16, 2012I think the performance logger tool is going to be the ultimate solution to track down the error that I'm having (and eventually no one else has?! :/)
Again: Great work!
-
View User Profile
-
Send Message
Posted Feb 16, 2012Getting high CPU load, even when no players connected. I'm using CB1846 with ModloaderMP and Forge.
-
View User Profile
-
Send Message
Posted Feb 16, 2012@jefe323
That's weird, I'm running all the newest versions too:
-
View User Profile
-
Send Message
Posted Feb 15, 2012@Darkhand81
I get an error in the console when using Orebfuscator and NoLagg together (both latest versions on R4)
[SEVERE] [NoLagg] An error occured in Orebfuscator: support for this plugin had to be removed! [SEVERE] [NoLagg] An error occured in Orebfuscator: support for this plugin had to be removed! [SEVERE] java.lang.NoSuchMethodError: net.minecraft.server.EntityPlayer.getPlayer()Lorg/bukkit/craftbukkit/entity/CraftPlayer; [SEVERE] at com.bergerkiller.bukkit.nolagg.sending.ChunkCompressionThread.getCompressedPacket(ChunkCompressionThread.java:133) [SEVERE] at com.bergerkiller.bukkit.nolagg.sending.ChunkCompressionThread.run(ChunkCompressionThread.java:171) [SEVERE] java.lang.NoSuchMethodError: net.minecraft.server.EntityPlayer.getPlayer()Lorg/bukkit/craftbukkit/entity/CraftPlayer; [SEVERE] at com.bergerkiller.bukkit.nolagg.sending.ChunkCompressionThread.getCompressedPacket(ChunkCompressionThread.java:133) [SEVERE] at com.bergerkiller.bukkit.nolagg.sending.ChunkCompressionThread.run(ChunkCompressionThread.java:171)
-
View User Profile
-
Send Message
Posted Feb 15, 2012@bergerkiller
That's fantastic! Similar to BukkitInsider I assume, but with a better visual interface?
-
View User Profile
-
Send Message
Posted Feb 15, 2012@jefe323
Orebfuscator is supported by NoLagg.
-
View User Profile
-
Send Message
Posted Feb 15, 2012is there an ore obfuscation plugin that works with NoLagg?
-
View User Profile
-
Send Message
Posted Feb 15, 2012This has been actually causing lag on our server. CPU and RAM usages are down when using it but it isnt able to update in a perfect 20tps. It actually lowers by about 0.2 tps for every user.
Disabled it and with one user (which used to give 19.4-19.8 tps) it gives a perfect 20 tps.
-
View User Profile
-
Send Message
Posted Feb 15, 2012@GravelSocks Well, I am currently writing a complete performance logger tool inside NoLagg. It is 70% finished; all it needs now is a GUI java app(let) to show the resulting graph in... (it exports to an .exam (examination) format)
It logs the following: - for every plugin: every event and task: the duration time of every tick at a duration of 500 ticks. I will be adding a graph-like figure which will show a perfect graph of each plugins' tick rate 'eating' during those 500 ticks. Since all times are long values, the resulting file is pretty large. (180 kb)
This will make it easier to find weaknesses in plugins. (it includes debugging information, for example, the task class name and the stack traces of where it is started.
<to the question> I generally recommend 2.0 as a max rate, it keeps everything stable. But some may feel they deserve better and use 3.0, which may cause an increase network usage.
-
View User Profile
-
Send Message
Posted Feb 15, 2012@bergerkiller - thx. I guess that could be why performance seems slower. What are the max values you have tried for all the chunk sending parameters that work without any trouble?
-
View User Profile
-
Send Message
Posted Feb 15, 2012@SERVERCONSOLE
That is a warning and it often does have an effect. It's a warning that you are using a missmatched version of nolagg/craftbukkit.
NoLagg 1.64 is for CraftBukkit build 1846 (thats 1.1 R3). It isn't guaranteed or even expected to work with CB Build 1938... if it does "work" you may have minor issues including increased lag and instability.
And of course everything I'm saying here is said in the second paragraph from the top up above.
You really should downgrade your craftbukkit install back to RB1.1 R3 and wait for a nolagg version that works correctly with a newer build.
-
View User Profile
-
Send Message
Posted Feb 15, 2012Getting this on startup.
10:16:45 [INFO] [NoLagg] Loading NoLagg v1.64. 10:16:45 [WARNING] Plugin 'NoLagg' v1.64 is too old to run on CraftBukkit build 1938 10:16:45 [WARNING] Update NoLagg to a newer version or look for an older build of CraftBukkit 10:16:45 [INFO] NoLagg version 1.64 enabled!
Figured it was just a warning with no effect but thought you should know.
-
View User Profile
-
Send Message
Posted Feb 15, 2012@imailyou I may have found one particular cause, but it's very unlikely. Then the server had to be modified to make block change packets cause actual block changes; that would be bad on it's own. I'll upload a fix later on in the day.
-
View User Profile
-
Send Message
Posted Feb 14, 2012Here is some more feedback:
a) The error persists with R4
b) re-login does not fix it, placed blocks remain on map after re-login. Only server restart solves problem (but blocks remain on map also then).
c) item buffering in config does not make a difference (true or false) - happens in both cases (was my own guesswork)
d) again, the error did not turn up without nolagg, and after 30 mins with nolagg
still not definitely saying *IT IS* nolagg. Can also be only triggering it.
Thanks for your help
-
View User Profile
-
Send Message
Posted Feb 14, 2012bergerkiller: yes they do I think
I have to reproduce the error to make 100% sure
-
View User Profile
-
Send Message
Posted Feb 14, 2012@offdps Looks to me like the newer craftbukkit build is unstable, since the latest source code does not match with the error. (the line is beyond the length of the file) You may have to downgrade CB
@imailyou Just a question: Do the placed blocks stay when you rejoin?