jiongjionger / NeverLag

一个专注于优化我的世界服务端性能、减少延迟、修复服务端/其他常用插件BUG、限制或禁用破坏多人游戏平衡的游戏机制的插件(A plugin that focuses on optimizing minecraft server performance, reducing server lag, fix server and popular plugin bug, limiting or disabling the game mechanism that hurt multiplayer balances.)
GNU General Public License v3.0
92 stars 21 forks source link

建议:添加主线程休眠功能 #44

Closed shaokeyibb closed 6 years ago

shaokeyibb commented 6 years ago

不知道可不可行,我是BC服的,有时候某些区服实在太占内存但是又不想关,能不能在服务器没人的时候休眠主线程(相当于关服了),只留一个线程检测玩家进服,如果玩家进服再重新启动主线程(就是开服),除了时间长一点,应该会很好优化内存占用吧

andylizi commented 6 years ago

你在几个月前不是已经提过一模一样的问题了么.... #38

shaokeyibb commented 6 years ago

之前不是没说清楚嘛

andylizi commented 6 years ago

无人时高内存占用的话,我想了一下可能有三种情况:

  1. 确实如你所描述,长时间没人却仍然有大量区块没卸载。这并非正常现象,建议检查一下会不会是某些插件或不当的服务端设置导致的。可以参考参考本插件作者写的 Minecraft服务器优化教程
  2. 只是因为服务端插件/mod太多因此导致内存占用高。
  3. 只是你感觉上多,实际上是正常的。

无论实际原因是以上三个里的哪一种,都不是休眠主线程能解决的。让主线程停止运行甚至可能影响区块GC,反而会加剧区块无法卸载的问题。

另:休眠主线程不等于关服,再次启动主线程也不等于开服。运行一个服务器并不是只有主线程而已。

我已经很久没运营过MC服务器了,这方面的知识可能记不太清或有些过时了,如有错误之处还请指正。