Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Большая база данных UniFi, UniFi Network
 
Привет, люди. У меня большая установка UniFi AP — 1900 точек доступа. Все они подключены к одному контроллеру версии 3.2.10 на Linux.  
[root@ekb-wlanc3 db]# pwd
/usr/lib/UniFi/data/db  
[root@ekb-wlanc3 db]# du -sh *
64M ace.0  
129M ace.12  
0G ace.10  
2.0G ace.11  
2.0G ace.12  
2.0G ace.13  
2.0G ace.14  
2.0G ace.15  
257M ace.25  
13M ace.3  
1.1G ace.4  
2.0G ace.5  
2.0G ace.6  
2.0G ace.7  
2.0G ace.8  
2.0G ace.9  
16M ace.ns  
4.0K ace_stat  
3.1G journal  
64M local.0  
16M local.ns  
4.0K mongod.lock  
4.0K _tmp  
4.0K version  

Как видите, весит около 28 ГБ и продолжает расти. На этом сайте я нашёл скрипт (mongo_prune_js.js) для сжатия базы данных. Запускаю его еженедельно через cron, но размер почти не меняется. Подскажите, пожалуйста, как реально уменьшить размер базы.
 
Спасибо за помощь. Я увеличил оперативную память до 8 ГБ. Вот информация о Java на Debian 8:  
root@wlanc-106:/etc/default# dpkg -l | grep -i java  
ii  java-common                0.52           all           База всех Java-пакетов  
ii  jsvc                      1.0.15-6+deb8u1 amd64         Обертка для запуска Java-приложений как демонов  
ii  libcommons-daemon-java     1.0.15-6+deb8u1 all           Библиотека для запуска Java-приложений как демонов  
ii  libv8-3.14.5              3.14.5.8-8.1    amd64         Движок JavaScript V8 — библиотека времени выполнения  
ii  oracle-java8-installer    8u131-1~webupd8~2 all          Oracle Java™ Development Kit (JDK) 8  
ii  oracle-java8-set-default  8u131-1~webupd8~2 all          Устанавливает Oracle JDK 8 как Java по умолчанию  
 
root@wlanc-106:/etc/default# cat unifi  
JAVA_HOME=/usr/lib/jvm/java-8-oracle  
 
top - 15:06:55 up 20 min, 1 user, load average: 3.28, 3.35, 2.54  
Задачи: 118 всего, 1 запущена, 117 спят, 0 остановлены, 0 зомби  
%CPU: 21.0 пользователь, 0.3 система, 0.0 nice, 76.8 простаивает, 1.1 ожидание ввода-вывода, 0.0 аппаратные прерывания, 0.8 программные прерывания, 0.0 виртуализация  
Память: всего 8197260 Кб, используется 3174596 Кб, свободно 5022664 Кб, буферы 12096 Кб  
Своп: всего 471036 Кб, используется 0 Кб, свободно 471036 Кб. Кешировано 1115768 Кб  
 
Может, стоит настроить Mongo и Java?
 
Добавление большего количества процессоров, думаю, не поможет. Какую версию JAVA вы используете? Я бы собрал Windows VM просто для теста, чтобы посмотреть, как там работает (у меня тоже установлено на Linux, но только для теста). У меня была проблема с тем, что JAVA сильно загружала процессор, но это была именно проблема самой JAVA.
 
Даже если оперативной памяти кажется достаточно, возможно, увеличение её объёма позволит Linux использовать «свободную» память как кэш диска или буферы и, весьма вероятно, улучшит общую производительность машины. Я бы сначала попробовал удвоить или утроить объём RAM, прежде чем увеличивать количество процессоров.
 
Контроллер работает на VMWare 6.0.0 с двумя Xeon E5-2650 v3 по 10 ядер каждый. У него 4 vCPU и 4 ГБ ОЗУ. ОЗУ хватает (swap не используется, и графики в vCenter это показывают). Но CPU постоянно загружен, нагрузка держится от 65 до 85%. В top вижу, что java-процесс активно жрёт ресурсы CPU. Планирую удвоить количество vCPU. Есть какой-то способ замедлить java?
 
Если распределить AP между несколькими сайтами на одном контроллере, скорее всего, возникнет та же проблема. Если же установить несколько контроллеров, например, используя Cloud Key на каждом сайте, производительность контроллера на каждом из них улучшится, потому что нагрузка будет меньше. Но настройка с несколькими сайтами и контроллерами создаёт свои собственные сложности в управлении. Можно также выделить вашему текущему контроллеру больше ресурсов. На какой железе он у вас работает? Можете добавить оперативной памяти (только не забудьте поправить init-скрипт, чтобы при запуске запрашивалась нужная сумма), а если у вас медленный диск, лучше заменить его на SSD или добавить ещё шпинделей — это поможет справиться с объёмами данных от ваших AP и клиентов. Если узким местом является процессор, скорее всего, придётся менять сервер, если только CPU нельзя заменить или улучшить.
 
Привет, народ! Как и обещал, обновился с v3 до v4, а потом до v5. После этого сделал резервную копию v5. Удалил контроллер, установил заново и восстановил из бэкапа. Теперь моя база занимает 13 ГБ. Но! Веб-интерфейс всё равно работает очень медленно. Думаю, выход — разделить все точки доступа на несколько сайтов. А что вы думаете?
 
Верно — сначала нужно обновиться до версии 3.2.10, затем перейти на 4, а потом на 5: https://help.ubnt.com/hc/en-us/articles/220340647-UniFi-Upgrading-from-v2-x-to-v4-x-or-later-
 
В скрипте: var days=7; Спасибо за предложение перейти на контроллер версии 5.x. Надеюсь, это решит ещё одну текущую проблему — задержку отклика веб-интерфейса.
 
Да, как уже советовали другие, давно пора обновить контроллер! Выключите автоматическое обновление прошивки перед обновлением, и риск будет минимальным, если вы не меняете прошивку на своих устройствах (хотя в текущей прошивке для большинства AP исправлено много ошибок). Кстати, всегда можно сделать резервную копию файлов прошивки в вашем текущем контроллере и сохранить их на случай отката. Очистка базы данных теперь встроена прямо в графический интерфейс контроллера:
 
АПГРЕЙД, серьёзно!!! Новые контроллеры UniFi имеют встроенные в WebUI процедуры обслуживания данных и не нуждаются во внешних скриптах — это проще в настройке и работает! Версия 3.2.x уже древняя, и сейчас особо не стоит ждать от неё какой-то поддержки, особенно от сотрудников Ubiquiti!!
 
Возможно, здесь особо и снижать нечего. 1900 AP — это ОГРОМНЫЙ сценарий, и хотя ты не упомянул, я уверен, что у тебя должно быть ОЧЕНЬ МНОГО устройств, а это генерирует КУЧУ логов в базе данных. Попробуй уменьшить параметр days в prune.js до чего-то действительно маленького, например, до 30 дней, и посмотри, уменьшится ли размер. Должен уменьшиться. Кстати, какое значение days было у тебя, когда ты запускал prune.js на MongoDB?
 
Да, я изменил скрипт с var dryrun=false; размер базы данных не уменьшился.
 
@ks99

Ты не забыл изменить скрипт, чтобы он вышел из режима «пробного запуска»? В инструкциях на https://help.ubnt.com/hc/en-us/articles/204911424-UniFi-How-to-Remove-Prune-Older-Data-and-Adjust-Mongo-Database-Size написано: «Предполагая, что вы используете nano для редактирования файла, управляйте текстом с помощью стрелок. Измени var days=7; чтобы задать, сколько дней данных хранить; и поменяй var dryrun=true; на var dryrun=false; чтобы скрипт действительно очищал базу данных, а не просто делал тестовый прогон.» Я сам никогда не пользовался этим скриптом, но насколько я понимаю, изначально он не вносит изменений, если его не модифицировать.
 
UBNT вносит изменения, чтобы упростить управление установками MongoDB. Не уверен, что это уже доступно для всех. Лучше устанавливайте свежую 64-битную версию Mongod и убедитесь, что параметры базы данных оптимизированы под вашу среду. R+C
 
А вот по поводу обновления контроллера с версии 3.2.x — я правда не уверен, что напрямую с 3.2.x до 5.4.x получится. Лучше сначала консервативно обновиться до 4.8.x, а уже потом переходить на 5.4.x.
Страницы: 1
Читают тему (гостей: 1)