Работник Crossbar Thruway попал в аварию

У меня есть сервер Crossbar.io с рабочими PHP Thruway. Недавно я начал получать следующую ошибку. Сейчас это происходит примерно раз в день:

2016-04-17T21:08:12+0000 [Router       9572] Unable to format event {'log_logger': <Logger 'crossbar.router.protocol.WampWebSocketServerProtocol'>, 'log_time': 1460927292.17918, 'log_source': None, 'log_format': 'Traceback (most recent call last):\n  File "/usr/local/lib/python2.7/site-packages/autobahn/wamp/websocket.py", line 88, in onMessage\n    for msg in self._serializer.unserialize(payload, isBinary):\n  File "/usr/local/lib/python2.7/site-packages/autobahn/wamp/serializer.py", line 106, in unserialize\n    raise ProtocolError("invalid serialization of WAMP message ({0})".format(e))\nProtocolError: invalid serialization of WAMP message (Expected object or value)\n'}: tuple index out of range
2016-04-17T21:08:15+0000 [Guest        9583] The connected has closed with reason: close
2016-04-17T21:08:19+0000 [Guest        9583] PHP Fatal error:  Call to a member function call() on null in /var/www/html/pickupServer/vendor/voryx/thruway/src/Thruway/ClientSession.php on line 106
2016-04-17T21:08:19+0000 [Guest        9583] Fatal error: Call to a member function call() on null in /var/www/html/pickupServer/vendor/voryx/thruway/src/Thruway/ClientSession.php on line 106
2016-04-17T21:08:19+0000 [Controller   9565] Guest worker2 exited with error A process has ended with a probable error condition: process ended with exit code 255.

Кто-нибудь знает, как предотвратить это?

Как мне автоматически перезапустить рабочего, если он не работает, как в этом случае?


person Casper Alant    schedule 18.04.2016    source источник
comment
Знаете ли вы, какую версию Thruway вы используете? (composer show | grep voryx/thruway)   -  person mbonneau    schedule 18.04.2016


Ответы (1)


Я решил это в Linux с помощью MONIT, проверив процесс crossbar-controller и добавив следующую строку:

если детей ‹ 3 то перезапустить

3 — это количество дочерних процессов, которые есть у crossbar-controller в моей среде. Если какой-либо из них выходит, поперечная панель перезапускается и уведомляет меня. Вы должны проверить количество запущенных дочерних процессов, используя:

статус перекладины службы sudo.

Это устраняет ошибку обработчика выхода, но требует перезапуска контроллера перекладины. Я убежден, что это должен быть перекрестный/проходной путь решения проблемы. Идеальный способ — попытаться отловить все возможные ошибки php, чтобы предотвратить фатальные выходы воркера.

Спасибо

person Nuno Vitorino    schedule 02.06.2016