Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1 2 След.
RSS
Превышена ёмкость очереди Inform stat - 6.4.54, UniFi Network
 
У нас проблемы с контроллером Unifi в версии 6.4.54. Хотя служба не останавливается, при попытке доступа к URL появляется ошибка 503. В логах ошибок сервера тысячи записей с сообщением: <stat-processor> WARN dev - Inform stat queue capacity exceeded. Я проверил все темы на форуме сообщества по этой проблеме — ни одного ответа от команды Ubiquiti, что огорчает, потому что после множества обновлений приложения проблема всё ещё сохраняется.  

Добавил в файл system.properties следующие строки:  
inform.max_keep_alive_requests=4000  
inform.num_thread=5000  
inform_stat.thread_queue_size=6000  

Но ошибка всё равно остаётся. После перезапуска службы она работает примерно 12 часов, а потом снова падает.  

Характеристика окружения: 1 площадка с 101 свитчем и 47 точками доступа. Версия MongoDB — 3.6.23. Debian версии 10.2.1.  

MongoDB уже использует режим WiredTiger, мы уже выполняли очистку prune и добавили необходимую строку для настройки сборщика мусора Java.
 
Спасибо за заботу. В моей установке стоит последняя версия log4j, я обновил её вручную. Проблема в том, что база данных не справляется с объёмом передаваемых данных. Это происходит только в определённые дни и часы недели из-за внезапного увеличения числа клиентов, которые подключаются все одновременно. В результате контроллер оказывается завален большим количеством информационных пакетов. Во время пиковых нагрузок я получаю более 10 Мбит/с трафика на TCP/порт 8080. Просто из любопытства, какие у вас характеристики железа? И сколько у вас устройств прямо сейчас?
 
Если вы всё ещё используете версию 6.4.54 — остановитесь! Она уязвима к эксплойтам log4j. Я работаю на 6.5.55, и никаких проблем с производительностью нет, при тысячи устройств и десятках тысяч ежедневных пользователей. Никаких перегрузок процессора и прочих заморочек.
 
Хочу отметить, что я решил эту проблему у себя. Проблема, с которой я столкнулся, не была связана с неправильной настройкой контроллера Unifi. Оказалось, что мои системы подвергались атаке из-за уязвимости log4j. Вот почему, когда они выходили в онлайн, сразу же перегружались. Как только Unifi исправили проблему с log4j, моя проблема исчезла. Сейчас мой контроллер работает очень стабильно.
 
Увеличение размера очереди будет использовать больше памяти и CPU, если база данных или Java не смогут обрабатывать её достаточно быстро. Вам нужно посмотреть, где сервер зависает, в server.log и mongodb.log, а затем решить эту проблему.
 
Увеличил inform_stat.thread_queue_size до 24000, но это не помогло. Сейчас тестирую 48k. inform.num_thread=20000
 
Я только что это понял и снова столкнулся с той же проблемой. Теперь установил: inform_stat.thread_queue_size=12000 db.mongo.wt.cache_size=4096. Есть другие предложения? Документации по этим настройкам inform.* почти нет, хотя они вроде бы сами за себя говорят. Но похоже, что нет способа измерить или узнать, сколько сейчас реально используется приложением.
 
Ваши характеристики не подходят для такого количества устройств, особенно если вы планируете увеличить их число до 7000. Ваш файл system.properties потребуется доработать.
 
Та же проблема у меня. Характеристики:  
Сайты: 2k+  
Устройства: 2,5k+  
Версия: 6.4.54  
 
db.mongo.connections_per_host=100  
db.mongo.local=false  
db.mongo.threads_multiplier=5  
db.mongo.uri=mongodb://127.0.0.1:27117/ace  
db.mongo.wt.cache_size=2048  
debug.device=warn  
debug.mgmt=warn  
debug.sdn=warn  
debug.system=warn  
is_configured_and_restarted=true  
is_default=false  
 
statdb.mongo.uri=mongodb://127.0.0.1:27117/ace_stat  
unifi.db.name=ace  
unifi.xms=16384  
unifi.xmx=16384  
 
CPU: двойной сокет Intel® Xeon® CPU E5-2689 0 @ 2.60GHz (32 ядра)  
RAM: 64 ГБ  
 
Запущено в LXC-контейнере без ограничений по памяти, но с лимитом по CPU. Раньше не было настроек "inform" и сборщика мусора. Сейчас добавил:  
inform.max_keep_alive_requests=4000  
inform.num_thread=5000  
inform_stat.thread_queue_size=6000  
unifi.G1GC.enabled=true  
 
Посмотрим, как пойдёт. Ожидаю в итоге около 6k сайтов и 7k устройств. Думаю разделить сервер mongodb (3.6) и собрать кластер для распределения нагрузки, но интересно, хватит ли этого. Стараюсь избежать множества контроллеров, потому что это сильно усложняет нашу среду, учитывая, что у нас есть кастомное веб-приложение, которое через API общается с контроллером.
 
Что-то странное у меня с этим было. Все время глючило, а потом, странным образом, после перезагрузки контроллера начало работать. Я ничего не трогал. Странно. Видимо, понадобилось пару дней, чтобы система разобралась со своим бредом.
 
20 дней — и ни ответа от Ubiquiti...
 
Я создал заявку в техподдержку Ubiquiti.
 
Тут уже много обсуждений на эту тему, так что я не один, кто видит проблему с версиями 6.4/.5. Похоже, что переполнение очереди состояния оповещений — корень всей беды.
 
Я работаю с более чем 200 000 устройств Unifi на тысячах контроллеров и тысячах площадок и пока не встречал такого поведения на больших контроллерах с версиями 6.4 или 6.5, так что это явно исключение. Вы не сможете понизить версию контроллера без использования старой резервной копии (6.4). Если хотите, пришлите мне информацию — я попробую воспроизвести проблему или даже помочь с её размещением.
 
Я точно не знаю, сколько устройств уже подключено, мы добавляем их каждый день. Во многих крупных установках количество подключённых устройств превышает 100, так что я бы оценил общее число принятых Unifi-устройств примерно в 2000, и около 120 устройств UNMS (с ними всё проще). На больших площадках ежедневно пользуются 700–900 устройств. Эти настройки не повлияли ни на что, я даже переключился на mongo 3.6.23 — результата ноль. Это точно баг в версии 6.5.53. Придётся разделить контроллеры: оставить 6.4.54 для старых площадок и 6.5.53 для нового RV-парка, который я запустил на прошлой неделе. Чтобы не пришлось сбрасывать и заново подключать все устройства. Импортировать сайт из 6.5.53 в 6.4.54 нельзя. Уф.
 
Попробуйте добавить db.mongo.wt.cache_size=4096 unifi.xss=4096 Remove db.mongo.wt.cache_size_default=true unifi.G1GC.enabled=true Сколько устройств подключено?
 
Проблема в том, что контроллер неправильно обрабатывает очередь inform_stat. Загрузка процессора в виртуальной машине около 50%, при этом практически нет задержек при работе со сторейдж-массивом, а Mongo использует примерно 4-5% CPU. Время отклика сторейдж-массива не превышает 5 мс, что должно быть более чем достаточным. Я делаю бэкапы Veeam два раза в день на сервер репликации, но это никогда не влияло на версию 4.5.
 
Конечно, сервер EPYC 7401, на котором стоит Server 2019 Standard с 128 ГБ ECC RAM и NVME SSD в RAID 0 для Unifi, при этом каждая виртуальная машина работает на своём выделенном массиве хранения. Виртуальная машина для контроллера Unifi с 16 ядрами и 40 ГБ оперативной памяти, выделена Windows 10 PRO JAVA 8-311. Всё работало нормально с версией 6.4 (ну, по крайней мере какое-то время — через неделю она начала барахлить), а 6.5 постоянно глючит. Даже пробовал mongo 3.6. У меня есть контроллеры на Ubuntu — стабильность SDN не меняется. Ubuntu обычно вызывает больше проблем, чем Windows, особенно с 10GB сетевыми картами. Вот настройки, которые я использовал:  
db.mongo.connections_per_host=250  
db.mongo.threads_multiplier=10  
db.mongo.wt.cache_size_default=true  
debug.device=warn  
debug.mgmt=warn  
debug.sdn=warn  
debug.system=warn  
inform.max_keep_alive_requests=3500  
inform.num_thread=4000  
inform_stat.thread_queue_size=6000  
is_default=false  
unifi.G1GC.enabled=true  
unifi.xms=25600  
unifi.xmx=32768  

Ничто, кроме времени работы, не влияет на стабильность — примерно через 10-15 минут появляется постоянная ошибка:  
[2021-12-04T11:03:35,231] <stat-processor> WARN dev - Inform stat queue capacity exceeded

Моя главная проблема — я построил новый RV-парк с новым контроллером версии 6.5.53, пока не понял, что он постоянно глючит. Теперь мне придётся или использовать 6.5.53 с новым объектом, или заново подключать всё через 6.4.54, которая была намного стабильнее.
 
Какие характеристики у сервера и можете ли вы поделиться изменениями в файле system.properties?
 
Уверен, что всё это работает на каком-то монстр-сервере. Ты думал разбить систему и запустить несколько контроллеров на виртуальных машинах или контейнерах на том же хосте? Слишком много яиц в одной корзине под названием mongo. Судя по твоим комментариям, в новых версиях может быть программная ошибка, которая проявляется, когда контроллер сильно нагружают. Это стоит проверить и исправить, но, может, стоит подумать о разделении на 3 или 4 группы.
Страницы: 1 2 След.
Читают тему (гостей: 1)