оптимизированная строка запуска

  • Автор темы Автор темы InterVi
  • Дата начала Дата начала

InterVi

Старожил
Пользователь
Баллы
173
Ник в Minecraft
InterVi
Ищу и не могу найти внятных описаний. Как выглядит самая оптимизированная строка запуска? У меня есть такой вариант:
Код:
java -Dfile.encoding=utf-8 -Xincgc -server -Xmx2G -Xms256M -XX:MaxPermSize=128M -XX:+UseBiasedLocking -XX:+AggressiveOpts -XX:UseSSE=4 -XX:+UseFastAccessorMethods -jar spigot.jar
Но половина параметров не понятна. Опишите если не сложно.
 
Объясняю что в вашем варианте:
Java - Запуск программой Java.
-Dfile.encoding=utf-8 - Кодировка в формате UTF-8.
-Xincgc - Высвобождает из памяти неиспользуемые объекты.
-server - Запуск в формате серверной оболочки Java (Требуется для параметров с префиксом -XX).
-Xmx2G - Дает серверу 2 ГБ оперативки максимум.
-Xms256M - Дает серверу 1/4 ГБ оперативки минимум.
-XX:MaxPermSize=128M - Дает своеобразному "мусорщику" 1/8 ГБ оперативки максимум (Особенно помогает при большом количестве модов).
-XX:+UseBiasedLocking - Включает некую предвзятую блокировку.
-XX:+AggressiveOpts - Изменяет 5 параметров виртуальной машины в сторону производительности.
-XX:UseSSE=4 - Не особо мне известно, однако тоже помогает в производительности.
-XX:+UseFastAccessorMethods - Использует более скоростные методы, дабы опять же увеличить производительность.
-jar spigot.jar - Открывает упомянутый файл.

Всю информацию можно было найти, просто поискав в поисковике.
Кстати, рекомендую посмотреть список различных аргументов Java, там много чего интересного.
 
Последнее редактирование:
Гоняю сервера с такой строкой -
Код:
java -jar -server -Xmx16385M -Xms4096M -XX\:MaxPermSize\=256m -Xincgc -Dcom.sun.management.jmxremote.port\=3334 -Dcom.sun.management.jmxremote.ssl\=false -Dcom.sun.management.jmxremote.authenticate\=false -Djline.terminal\=jline.UnsupportedTerminal -Dfml.ignoreInvalidMinecraftCertificates\=true -Dfml.ignorePatchDiscrepancies\=true mcpc-plus-1.6.4-R2.1-forge965-B251.jar --nojline
Всё летает.
Параметры
Код:
Dcom.sun.management.jmxremote.port\=3334 -Dcom.sun.management.jmxremote.ssl\=false -Dcom.sun.management.jmxremote.authenticate\=false
можете выкинуть
 
Гоняю сервера с такой строкой -
Код:
java -jar -server -Xmx16385M -Xms4096M -XX\:MaxPermSize\=256m -Xincgc -Dcom.sun.management.jmxremote.port\=3334 -Dcom.sun.management.jmxremote.ssl\=false -Dcom.sun.management.jmxremote.authenticate\=false -Djline.terminal\=jline.UnsupportedTerminal -Dfml.ignoreInvalidMinecraftCertificates\=true -Dfml.ignorePatchDiscrepancies\=true mcpc-plus-1.6.4-R2.1-forge965-B251.jar --nojline
Всё летает.
Параметры
Код:
Dcom.sun.management.jmxremote.port\=3334 -Dcom.sun.management.jmxremote.ssl\=false -Dcom.sun.management.jmxremote.authenticate\=false
можете выкинуть
Однако не у многих такой мощный ПК или же хостинг.
Свыше 16 ГБ оперативки не у каждого есть.
Кстати, тут мало параметров, все держится чисто на количестве оперативной памяти.
А также параметр для игнорирования изменений ядра Minecraft попросту не нужен. Это сервер, а не клиент.
 
Однако не у многих такой мощный ПК или же хостинг.
Свыше 16 ГБ оперативки не у каждого есть.
Кстати, тут мало параметров, все держится чисто на количестве оперативной памяти.
А также параметр для игнорирования изменений ядра Minecraft попросту не нужен. Это сервер, а не клиент.
Ну и то верно.. Не у всех 64 гб на хостинге... 😁
 
MaksGruw, отлично расписал, спасибо
я гуглил, но в основном все было на английском, который я плохо перевожу
 
А я вот такие параметры использую (память по выбору):
JVMParams: string =
'-server ' +
'-D64 ' +
'-XX:MaxPermSize=512m ' +
'-XX:+UnlockCommercialFeatures ' +
'-XX:+UseLargePages ' +
'-XX:+AggressiveOpts ' +
'-XX:+UseAdaptiveSizePolicy ' +
'-XX:+UnlockExperimentalVMOptions ' +
'-XX:+UseG1GC ' +
'-XX:UseSSE=4 ' +
'-XX:+DisableExplicitGC ' +
'-XX:MaxGCPauseMillis=100 ' +
'-XX😝arallelGCThreads=8 ' +
'-DJINTEGRA_NATIVE_MODE ' +
'-DJINTEGRA_COINIT_VALUE=0 ' +
'-Dsun.io.useCanonCaches=false ' +
'-Djline.terminal=jline.UnsupportedTerminal ' +
'-XX:ThreadPriorityPolicy=42 ' +
'-XX:CompileThreshold=1500 ' +
'-XX:+TieredCompilation ' +
'-XX:TargetSurvivorRatio=90 ' +
'-XX:MaxTenuringThreshold=15 ' +
'-XX:+UnlockExperimentalVMOptions ' +
'-XX:+UseAdaptiveGCBoundary ' +
'-XX😝ermSize=1024M ' +
'-XX:+UseGCOverheadLimit ' +
'-XX:+UseBiasedLocking ' +
'-Xnoclassgc ' +
'-Xverify:none ' +
'-XX:+UseThreadPriorities ' +
'-Djava.net.preferIPv4Stack=true ' +
'-XX:+UseStringCache ' +
'-XX:+OptimizeStringConcat ' +
'-XX:+UseFastAccessorMethods ' +
'-Xrs ' +
'-XX:+UseCompressedOops ';

Вместо смайликов ": Р" без пробела
 
-XX:+UnlockCommercialFeatures
-XX:+UseAdaptiveSizePolicy
Djline.terminal=jline.UnsupportedTerminal
С этими не запускался. Но все равно осталось ошибка, хотя и работает:
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory (errno = 22)

Но оставил свой вариант, по визуальной быстроте старта и объему отжираемой памяти он остается более производительным. Еще к ней вот это добавил, стало лучше:
Код:
-XX:+UseConcMarkSweepGC
 
Последнее редактирование:
Проверил все данные варианты - Они все пожирают намного больше оперативки, нежели запуская обычным (Без всех этих параметров) способом.
И проведя "полевые испытания", я разработал вот эту строку запуска:
Код:
java -server -Xincgc -Xmx1G -Dfile.encoding=UTF-8 -XX:UseSSE=4 -XX:+UseLargePages -XX:+OptimizeStringConcat -XX:+OptimizeFill -XX:+AggressiveOpts -jar Core.jar
Ваши строки запуска потребляли аж свыше 500 тысяч. А эта меньше 200 тысяч.
Про оптимизацию (Лаги и т.п.) я не проверял, но проверял потребление памяти. Возможно с этой строкой и лагов будет меньше.
P.S. Проверял на Libigot 1.5.2.
 
MaksGruw, проверил, у меня жрет памяти больше и стартует медленнее. Ну это что я могу сказать по запуску, на нагрузке не могу протестировать. Ядро спигот. Наверно от ядра тоже зависит как строку оптимизировать.
а как это все сказывается на загрузке процессора? кто-нибудь проверял?
 
Код:
java -server -jar *.jar
'-Xmx%M' для выделения бОльшего кол-ва памяти.
Хотите чтобы всё летало? Переписывайте сервер на многопоточность.
 
Код:
java -server -jar *.jar
'-Xmx%M' для выделения бОльшего кол-ва памяти.
Хотите чтобы всё летало? Переписывайте сервер на многопоточность.
не совсем понял про это, хоть все и говорят.. судя по htop у джавы куча процессов и она распределяет нагрузку между ядрами
 
не совсем понял про это, хоть все и говорят.. судя по htop у джавы куча процессов и она распределяет нагрузку между ядрами
Нагрузка распределяется, но всё обрабатывается в одной очереди, а не паралельно.
 
Код:
java -server -jar *.jar
'-Xmx%M' для выделения бОльшего кол-ва памяти.
Хотите чтобы всё летало? Переписывайте сервер на многопоточность.


Вопрос на засыпку: Самый свежий spigot 1.7.9, на сервере 40 чел. Занимает от 5 до 9 Гб памяти. Это норма? 1.7.2 был поскромнее...
 
Вопрос на засыпку: Самый свежий spigot 1.7.9, на сервере 40 чел. Занимает от 5 до 9 Гб памяти. Это норма? 1.7.2 был поскромнее...
30к чанков в памяти занимают не больше 3 гб. Так что у тебя хрень какая то, не может он столько жрать на 40 игроках.
 
Вот сегодня- шло нормально, потом бац-подвисание, и занято уже более 6Гб, при том, что вся папка сервера на диске занимает 4Гб... Часть плагинов уже поубирал, при том, что проблемм особых и не высвечивалось
http://aikar.co/timings.php?url=3c06bad924a751e341b32b9a2c1c60cf
ядро вот это http://ci.md-5.net/job/Spigot/1484/
плагины Снимок экрана от 2014-05-30 12:44:38.png
Есть идеи, куда копать? (похоже, надо создавать отдельную тему)
 

Вложения

  • Снимок экрана от 2014-05-30 12:30:48.png
    Снимок экрана от 2014-05-30 12:30:48.png
    80,8 КБ · Просмотры: 89
Память тут непричём, просто у тебя есть пачка плагинов которые сильно тормозят на присоединении игрока.
 
Вопрос на засыпку: Самый свежий spigot 1.7.9, на сервере 40 чел. Занимает от 5 до 9 Гб памяти. Это норма? 1.7.2 был поскромнее...
У меня при онлайне в 50 даже до 1.5Гб не доходит. Какая строка запуска?
 
У меня при онлайне в 50 даже до 1.5Гб не доходит. Какая строка запуска?
java -server -Dfile.encoding=UTF-8 -Xmx12G -XX:MaxPermSize=256m -jar midgard.jar
сейчас занялся наблюдением. Минут 10-15 работает нормально, памяти 1-2 Гб использовано, потом подвисание, и съедает всё, что выделено, начинаются дикие зависания, даже на 20 игроках.
 
java -server -Dfile.encoding=UTF-8 -Xmx12G -XX:MaxPermSize=256m -jar midgard.jar
сейчас занялся наблюдением. Минут 10-15 работает нормально, памяти 1-2 Гб использовано, потом подвисание, и съедает всё, что выделено, начинаются дикие зависания, даже на 20 игроках.
Тут на самом деле проблема уже не в строке запуска, а плагинах. У тебя стоит множество плагинов, которые формируют некую "пожирающую память систему". Лучше сократи список плагинов до технического миниума, оставь только самое лучше. Ну можно конечно иначе, разделив нагрузку на несколько серверов...
 
Назад
Верх Низ