Posted Jan. 25, 2014
Right now, chunk loader-loaded chunks are
never unloaded. They persist in-memory forever, even between server restarts. This is obviously slowly taking a toll on the server, and it will eventually bring the server to a crawl.
Alice 1.6 has been performing fairly well overall, compared to previous versions, so there are no plans to disable chunk loaders. However, something must be done about these forever-chunks.
As it has been suggested in the past, it would be ideal that chunks be unloaded after some sort of time out since an player-specific event. For an implementation, the difficulty lies in that (1) not all chunk loader requests are tagged with a owner, notably those from Buildcraft for its quarries, (2) a type of event must be chosen (last login? of who? last visit?), and (3) a reasonable time period must be chosen.
- The problem of chunk loader identification can be solved by either requiring everyone to put a ChickenChunks chunk loader in the same chunk as their quarry, or by using chunk ownership data. The former is preferred, and allows some flexibility.
- Last login seems the most appropriate. For shared bases, using a friends list to determine the list of names to check would not work because people would simply list as many people as they could on their friends list. Unfortunately, it would seem that possibly the best solution here would be to have everyone living together place their chunk loaders all in the same chunks.
- A reasonable time period might be a day or two.
Also, another difficulty is that Buildcraft quarries store their boundary data in the chunk load request. This means if that if they are not chunk loaded, they forget their boundaries -- a problem some of you probably vividly remember. We've patched BC appropriately to not break in the past though, so we may approach this problem again in this manner.
We're happy to hear any other ideas, otherwise we will be going forward with selective chunk request removal dependent on last login time.
(Another solution that is much simpler is to not load chunks again between restarts.)