Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

FileRegionCache или полный п******

Тема в разделе "Обсуждение Minecraft", создана пользователем Shevchik, 20 авг 2014.

  1. Автор темы
    Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Начнём издалека:
    Вы наверняка много раз видели надпись saving world/Overworld при выключении сервера. Вас никогда не удивляло почему оно так долго висит хотя обычные сохранения мира заканчиваются мгновенно?
    Так вот это он самый, сохраняется, сволочь. Итак что же делает этот самый кэш? Из названия легко становится понятно что он кэширует файлы регионов (те самые r-бла-бла.mca).

    Вот только есть с ним одна нехилая проблема, а точнее целый вагон и ещё маленькая тележка.
    На самом деле тут всего 3 пункта, зато каких:
    1. FileRegionCache сохраняется на диск только при обычном выключении сервера, и поэтому резкое отключение питания сервера откатит вашу карты в каменные века. Более того, ни один релизный плагин автосохранений в текущий момент не сохраняет этот кэш, так что жопа...(В своём я уже пофиксил, но когда он доберётся до релиза это хз) Короче перезагружайте свой сервер хоть раз в день, ну или использовать /save-all flush.
    2. FileRegionCache кэширует в себе до 256 файлов одновременно, учитывая что каждый файл в среднем весит 11 метров, то... Ну короче теперь вы знаете куда сервер девает свою память... (немного простой арифметики подсказывает что в худшем случае у вас ни на что пропадает 3 гига памяти).
    3. Ежечасные бэкапы которые делают всякие нубы, хаха, не работают, потому что изменения в мире не пишутся на диск.

    Зачем же этот говнокэш нужен?
    А вот зачем: чтение с диска не такая быстрая операция и поэтому без этого кеша играть в одиночке было бы мучительно больно. А так майнкрафт прогружает 4 регион файла при старте, что даёт примерно 100 быстро грузящихся чанков во все стороны. Правда если так вспомнить то в ведре и кране чанки прогружаются асинхронно, то этот кэш там нахрен не нужен, но все ещё есть так как всем лень вырезать его каждый раз. В итоге это говно существует только потому что когда-то моджанги не осилили многопоточность и припили костыль...
     
    Последнее редактирование: 20 авг 2014
  2. Хостинг MineCraft
    <
  3. TeamCraft

    TeamCraft Старожил Пользователь

    Баллы:
    153
    Что мы получаем как обычно? Мк кривое г**** которое реализовано на костылях с горстью болтов, верно?
     
  4. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Поделюсь своим опытом держания сервера. Серверный каталог выглядит следующим образом:
    • backups/... — все бекапы работающих серверов
      • backups-<название сервера №1>/... — бекап конкретного сервера
      • backups-<название сервера №2>/...
      • и т.п.
    • jars/... — каталог с серверными ядрами
      • Spigot_v1.7.10.b3333.jar
      • и т.п.
    • servers/... — папка с серверами
      • server-<название сервера №1>/... — домашний каталог сервера
      • server-<название сервера №2>/...
      • ...
      • worlds/ — общий для серверов каталог с мирами
        • SomeWorldName
        • AnotherWorldName
    • Где-то в папке веб-сервера:
      • <название сервера №1>.домен.ru — каталог с картой Dynmap.
    Таким образом из папки каждого сервера мы убрали наиболее тяжёлые элементы: отрендеренную веб-карту, сами миры и серверный .jar-файл. Remote ToolKit настроен на рестарт серверов от 12 до 3 часов, в зависимости от сервера. На каждом из серверов работает MineBackup, который регулярно создаёт бекапы его сервера: zip-ует с уровнем сжатия 0 все миры сервера глубокой ночью, zip-ует корневую папку сервера с уровнем сжатия 9 каждые несколько часов, держа достаточное количество бекапов для любой экстренной ситуации. Плюс пинает сервер на save миров каждые минут 15.

    Дальше, имея несколько VPS/VDS, можно настроить мгновенную синхронизацию всего домашнего каталога серверов между ними через btsync. Главное, чтобы часы на всех шли синхронно и не запускать один и тот же сервер на нескольких машинах одновременно. Бекапы, естественно, можно в список игнорирования, их достаточно держать на каждой машине локально.
     
    Последнее редактирование: 20 авг 2014
  5. Автор темы
    Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    От этих бэкапов толку нахрен нет потому что в реальности изменения в мире на диск не дампятся до перезагрузки сервера, либо пока количество открытых файлов не станет > 256.
     
  6. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    У меня достаточно частые рестарты, и бекапы меня на самом деле выручали из большой тёмной ж.
     
  7. Автор темы
    Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Ну если частые рестарты тогда да.
     
  8. Space Flux

    Space Flux Активный участник Пользователь

    Баллы:
    46
    Репортить на баг-трекер моянгов 1.8 уже поздно, да?
     
  9. xDiP

    xDiP Старожил Девелопер Переводчик Пользователь

    Баллы:
    123
    Кроме тех которые юзали автосохранение в NoLagg.
     
  10. Автор темы
    Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Есть ещё команда /save-all flush кстати. Куда лучше использовать её чем nolagg(который на спайготе несёт больше проблем чем пруфита).
    И вообще в майне целая куча таких костылей, чего только стоит генерация мира.

    Собственно надо бы запилить рассказ почему чанки нельзя генерить не в главном потоке. А главное что блин на самом деле не так сложно сделать асинхронную генерацию чанков.

    Ещё наверное стоит рассказать про замечательный механизм обработки состояния игрока который отрабатывает при каждом пакете Player пришедшего с клиента.
     
    Последнее редактирование: 20 авг 2014
  11. Автор темы
    Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Костыли в обработке игроков это вообще отдельная тема. Может и запилю ещё пару статей о костылях ближе к выходным.
     
  12. Space Flux

    Space Flux Активный участник Пользователь

    Баллы:
    46
    Можно запилить eng-вариант на minecraftforum'е, там возможно сразу труъ девелоперы фикс-патчи запилят
     
  13. Lestrange

    Lestrange Активный участник Пользователь

    Баллы:
    66
    А если на форуме баккита / спайгота написать? Может они пофиксят.
     
  14. Автор темы
    Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Не пофиксят. Убирание этого кэша сломает многие скрипты бэкапа. На никсах ещё переживут, там журналируемые фс, да и жаба обычно файл атомарно записывает, а вот на вендах всё может закончится битым бэкапом.
     
  15. Lestrange

    Lestrange Активный участник Пользователь

    Баллы:
    66
    Minecraft станет многопоточным когда нибудь?
     
  16. Автор темы
    Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Станет, но не силами моджанг.
     
  17. Benseeley

    Benseeley Старожил Пользователь

    Баллы:
    123
    когда-то об этом заикался диннербон.
     
  18. Автор темы
    Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Вот только кому-то придётся его разработать, и очень, очень скоро. Смотри последнюю новость баккита.
     
  19. Benseeley

    Benseeley Старожил Пользователь

    Баллы:
    123
    берём glowstone core, дорабатываем - получаем ядро, которое лучше спигота и поддерживает баккит плагины (глоустоун их поддерживает. и самописный, к слову. про многопоточность не знаю, увы - не копался в коде. кстати, он под открытой лицензией).
     
  20. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    У Glowstone есть что-то похожее на многопоточность.
     
  21. Benseeley

    Benseeley Старожил Пользователь

    Баллы:
    123
    прекрасно
     

Поделиться этой страницей