Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Настройка JVM — контроллер Unifi, UniFi Network
 
Смотрю на контроллер версии 4.8.12 на Debian. Когда запускаю его через скрипт в /etc/init.d, вижу три долго работающих процесса: jsvcmongojava/ace.jar. Для процесса jsvc (который, видимо, форкает java?), получившийся JVM учитывает параметры из /etc/init.d/unifi в JVM_OPTS. Для другого java-процесса, по всей видимости, единственная настраиваемая опция — это установка Xmx в /usr/lib/unifi/data/system.properties через конфиг «unifi.xmx=512». Похоже, что должен также работать Xms, но у меня с этим не получается: я прописываю его в system.properties, но он не применяется к команде запуска JVM.

Вопросы:
- Какие рекомендуемые размеры кучи для разных нагрузок (число AP, настройка портала, гостевой конфиг и т.д.)?
- Можно ли настроить другие параметры JVM (тип сборщика мусора, минимальный размер кучи, perm gen, young gen и прочее) для процесса, не использующего jsvc?
- Насколько безопасно запускать mongo и второй java-процесс без использования jsvc для стартапа? Помимо очевидных параметров командной строки, что ещё нужно, чтобы эти процессы нормально работали?
 
Хороший системный юнит BetterHomeWifi. У меня есть предложение: лучше положить файл юнита в /etc/systemd/system вместо /lib/systemd/system. Файл в /etc будет иметь приоритет над файлом в /lib и это правильный способ изменить юнит, который идёт в составе пакета. Так сервис можно будет назвать просто unifi.service, а не unifi-direct.service. В любом случае оба варианта рабочие, но через год, возможно, будет проще запомнить, если он называется unifi.service.
 
В итоге я решил это попробовать. Вот systemd unit файл, который у меня получился. Похоже, что работает; mongod запускается из java-процесса. Буду рад предложениям по улучшению.

[Unit]
Description=Unifi controller без бесполезного jsvc  
After=local-fs.target remote-fs.target network-online.target  
Wants=network-online.target  
Conflicts=shutdown.target

[Service]
WorkingDirectory=/usr/lib/unifi  
ExecStart=/usr/bin/java -Xmx512M -server -jar /usr/lib/unifi/lib/ace.jar start  
ExecStop=/usr/bin/java -Xmx512M -server -jar /usr/lib/unifi/lib/ace.jar stop

[Install]
WantedBy=multi-user.target

Я создал файл /lib/systemd/system/unifi-direct.service (ПРИМЕЧАНИЕ: на самом деле он должен быть в /etc/systemd/system/) с таким содержимым, потом выполнил эти команды:  
service unifi disable  
service unifi stop  
systemctl disable unifi  
systemctl stop unifi  
systemctl daemon-reload  
systemctl enable unifi-direct  
systemctl start unifi-direct
 
Есть идеи? Правка: мы не используем привилегированные порты; см. http://stackoverflow.com/questions/28894008/what-benefit-do-i-get-from-jsvc-over-just-using-systemd
 
😕
 
Какие-нибудь идеи? Кто-нибудь так делает? Если я смогу запустить второй процесс java напрямую, то смогу установить JVM-флаги как мне захочется...
Страницы: 1
Читают тему (гостей: 1)