IronLogic СКУД
Сетевые контроллеры => Z5R WEB => Тема начата: astashov от 19 Ноября 2018, 07:49
-
Второй день подряд, без каких то определенных причин контроллер перестает отправлять сообщения с запросами и евентами на сервер.
За два дня - два случая.
Первый случай - нет запросов, есть только евенты
Второй случай - нет ни запросов, ни евентов. Вообще никакого трафика от контроллера в сторону сервера.
При этом веб интерфейс работает, и проход по уже записанным картам работает.
Такое ощущение, как будто контроллер перешел в оффлайн режим. Только вот почему?
Перезагружаешь контроллер через веб интерфейс, и на сервер сразу передается большое количество евентов, с момента последней активности контроллера.
Подскажите пожалуйста, в какую сторону смотреть?
-
Присоединяюсь. Буквально на прошлой неделе такое же было. На ровном месте контроллер перестал слать эвенты. Веб -интерфейс работал нормально.
После перезагрузки все восстановилось с пакетом прошедших событий.
-
Добрый день, с такой же проблемой столкнулись, бывало 4-5 раз за день вырубался, вэб морда работала а сам контроллер в режим оффлайн уходил. Немного помог swapon если по ssh зайти на сам контроллер. Он сам стал рестартовать при сбое и кол-во перезагрузок снизилось до 1(редко 2) в сутки.
-
Добрый день, с такой же проблемой столкнулись, бывало 4-5 раз за день вырубался, вэб морда работала а сам контроллер в режим оффлайн уходил. Немного помог swapon если по ssh зайти на сам контроллер. Он сам стал рестартовать при сбое и кол-во перезагрузок снизилось до 1(редко 2) в сутки.
Вот интересную вещь сказали. Что то я раньше не смотрел наличия ssh. Даже когда прочитал что на опенврт работает контроллер. А тут постучался, и да. И это отлично.
Теперь при желании можно из него даже WiFi точку доступа сделать :) Что бы собирать сиды устройств, которые вокруг него :) Ну это если совсем скучно будет :)
Эх ручонки мои ручонки.... :)
-
Конечно интересно. Можно было бы поподробнее покопаться, но не хочется в данный момент тратить время.
Что в итоге я понял:
На сервере есть демон, который общается с GPIO через i2c.
Видимо на аппаратном уровне реализована собачка(watchdog), который в случае отсутствия периодического опроса демоном webjsond, осуществляет принудительный перезапуск контроллера, ведь что то пошло не так и надо перезагрузиться что бы демон webjsond запустился через демон webd.
Причем если запустить webjsond в интерактивном режиме, то что мы видим в евентах? Правильно. Пустые евенты.
А вот после того как мы убиваем второй процесс, то на нас с дикой скоростью вываливаются старые евенты. В моем случае вывалились евенты за три дня. Т.е. по факту - это скорее всего и есть причина сдвига указателя на крайний евент.
Т.е. видимо в процессе обычной работы, по какой то причине запустился второй экземпляр webjsond, и вот он и приводил к тому, что шли пустые евенты и потом вся история.
Это частично(а может и полностью) объясняет почему контроллер перезагружался если ему послать криво сформированный ответ на евент. Видимо webjsond не мог сериализовать ответ от сервера, и получал эксепшен. Умирал.... А вслед за ним перезапускался контроллер, что бы воскресить потерянного боевого товарища :)
-
Так что перезапуск контроллера - это результат не кривой работы опенврт, или просадкой питания(хотя в некоторых случаях это так и есть), а такой нехитрый способ решить ошибки в программном коде :)
Круто чо :)
-
Я вот до этого говорил что на ардуинке можно такое собрать, беру свои слова обратно :)
а ардуинке не удобно :) Проще взять распбери пай, на ней уже и gpio есть, и usb, и сеть... И даже wifi :)
И дебиан для распбери, а не openwrt, и места побольше :) и даже сата можно подключить при необходимости....
А может это и есть модификация незначительная распбери? :) Не приглядывался на плату, не скажу :)
-
и еще маленький моментик:
в логах на контроллере периодически проскакивает
ReadMem error CS 72 72
Причем последние два байта всегда разные.
А так же в логе есть вот такое:
Try To Get License!
Error! Wrong signature!(A6500D2C)
Это что за зверь? :)
-
и еще маленький моментик:
в логах на контроллере периодически проскакивает
ReadMem error CS 72 72
Причем последние два байта всегда разные.
А так же в логе есть вот такое:
Try To Get License!
Error! Wrong signature!(A6500D2C)
Это что за зверь? :)
Вообще да, Именно ReadMem Error и натолкнул меня на размышление об утечках памяти. Есть подозрение что прошивка самого контроллера(модуля) на плюсах написана(не смотрел но что то подсказывает), отсюда и идет утечка памяти, как следствие переполнение в определенный момент, и z5r . В пользу этой версии говорит так же что swapon увеличил время работы до сбоя. Плюс контроллер стал сам уходить в рестарт, и сдается мне это делает именно openWRT, а не какая то внутренняя логика z5r.
Прошу сильно не пинать за догадки, я больше по программной части.
-
не, это именно openwrt. А еще webjsond регулярно общается с gpio14, и на постоянной основе только с ним. возможно при отсутствии общения и происходит перезапуск контроллера.
-
кстати, логи которые скачиваются через веб интерфейс, которые ище в бинарном формате - это обычный dmesg. где то просто мурат говорил что это какие то специальные логи для разработчиков.... нет там ничего интересного. strace и то интереснее и информативнее.
-
Версия FW контроллера: 3.26
Версия FW модуля связи: 1.0.130
В очередной раз контроллер перестал слать евенты:
последнее в логе:
[146608.970000] GetCtrlParams
DATA TO PARSE: {"date":"2018-11-25 21:18:49","interval":10,"messages":[]}66142,"operation":"ping","active":1,"mode":0}]}
[146609.000000] Try to parse JSON
[146609.000000] DATE= 2018-11-25 21:18:49
[146609.010000] INTERVAL = 10
[146609.010000] T_C=10
[146618.840000] GetCtrlParams
[146618.850000] Events: 0 (Empty: 2008)
[146618.850000] GetCtrlParams
DATA TO PARSE: {"date":"2018-11-25 21:18:59","interval":10,"messages":[]}6232,"operation":"ping","active":1,"mode":0}]}
[146618.880000] Try to parse JSON
[146618.880000] DATE= 2018-11-25 21:18:59
[146618.880000] INTERVAL = 10
[146618.890000] T_C=10
[146623.800000] External error
[146624.170000] External error
До этого несколько
[146390.880000] GetCtrlParams
DATA TO PARSE: {"date":"2018-11-25 21:15:11","interval":10,"messages":[]}65464,"operation":"ping","active":1,"mode":0}]}
[146390.920000] Try to parse JSON
[146390.930000] DATE= 2018-11-25 21:15:11
[146390.930000] INTERVAL = 10
[146390.930000] T_C=10
[146396.820000] ReadMem error CS C0 02
[146396.870000] ReadMem error CS C1 01
[146397.180000] External error
[146397.230000] ReadMem error CS C3 01
[146397.240000] ReadMem error CS C4 02
[146398.060000] GetExternal
[146398.060000] ERROR: WAIT TIMEOUT!
[146401.040000] GetCtrlParams
[146401.050000] Events: 0 (Empty: 2008)
[146401.050000] GetCtrlParams
Да и в принципе, ReadMem error достаточно.
В ps нет заветного процесса
root@Z5RWEB:~# ps
PID USER VSZ STAT COMMAND
1 root 1332 S /sbin/procd
2 root 0 SW [kthreadd]
3 root 0 SW [ksoftirqd/0]
5 root 0 SW< [kworker/0:0H]
6 root 0 SW [kworker/u2:0]
7 root 0 SW< [khelper]
8 root 0 SW [kworker/u2:1]
61 root 0 SW< [writeback]
64 root 0 SW< [bioset]
66 root 0 SW< [kblockd]
91 root 0 SW [kworker/0:1]
96 root 0 SW [kswapd0]
141 root 0 SW [fsnotify_mark]
156 root 0 SW< [ath79-spi]
238 root 0 SW< [deferwq]
250 root 0 SW [khubd]
331 root 0 SWN [jffs2_gcd_mtd3]
384 root 876 S /sbin/ubusd
385 root 772 S /sbin/askfirst ttyATH0 /bin/ash --login
797 root 0 SW< [cfg80211]
927 root 1036 S /sbin/logd -S 16
1027 root 0 SW< [kworker/0:1H]
1149 nobody 916 S /usr/sbin/dnsmasq -C /var/etc/dnsmasq.conf -k
1271 root 1152 S /usr/sbin/dropbear -F -P /var/run/dropbear.1.pid -p 22 -K 300
1503 root 1364 S /usr/sbin/crond -f -c /etc/crontabs -l 5
1521 root 2088 S /usr/sbin/uhttpd -f -h /www -r Z5RWEB -x /cgi-bin -u /ubus -t 60 -T 30 -A 1 -n 3 -p 0.0.0.0:80 -i .sh=/bin/sh -I index.sh -C /etc/uhttpd.crt -K /etc/uhttpd.key -s 0.0.0.0:443
1528 root 1488 S /sbin/netifd
1637 root 1360 S ntpd -p pool.ntp.org -S ctrl_time
13777 root 1196 D /usr/sbin/dropbear -F -P /var/run/dropbear.1.pid -p 22 -K 300
13785 root 1364 S -ash
13791 root 1360 R ps
15438 root 0 RW [kworker/0:0]
Как только с консоли запустил
webjsond -d
евенты сразу полетели и контроллер начал работать и присылать пинги.
После старта, в логе кроме нескольких ReadMem error ничего подозрительного нет.