Сервер Fiware CEP перестает отвечать
При разработке в CEP Fi-Cloud у меня была проблема, которая повторялась неоднократно. Поскольку я пытаюсь разработать определение для выполнения задачи, сервер CEP и Authoring Tool перестают отвечать, хотя ssh все еще реагирует.
Эта проблема происходит по мере моего развития. Я использую AuthoringTool для изменения определения по крупицам, а затем повторно загружаю его на сервер с помощью функции экспорта инструмента разработки. Чтобы заново инициировать протон с новым определением каждый раз, когда я его изменяю, я использую Почтальон Google с этой единственной операцией:
-PUT (url:http: // {ip}: 8080 / ProtonOnWebServerAdmin / resources / instances / ProtonOnWebServer) заголовок: 'Content-Type': 'application / json'; body: {"action": "ChangeDefinitions", "definitions-url": "/ ProtonOnWebServerAdmin / resources / definitions / Definition_Name"}
В то же время, я вошел в систему с тремя экземплярами ssh, один для мониторинга файлов, создаваемых в /opt/tomcat10/sample/, и других вещей, а два других - для файлов журнала 'tail -f', в которые записывается определение, как обрабатываются события: один журнал для полученных событий и другой журнал для событий, обнаруженных EPAgent.
Я повторяю эти процедуры снова и снова, поскольку я разрабатываю и, в конечном итоге, сервер CEP и Authoring Tool перестают отвечать.
"Хвост" файла журнала Tomcat (# tail -f /opt/tomcat10/logs/catalina.out) я могу видеть, что, когда в этих обстоятельствах, если я пытаюсь:
-GET (URL: http: // {ip}: 8080 / ProtonOnWebServerAdmin / resources / instances / ProtonOnWebServer) Я не получаю ответ, и tomcat регистрирует следующий ответ:
11452100 [http-bio-8080-exec-167] ERROR org.apache.wink.server.internal.RequestProcessor - An unhandled exception occurred which will be propagated to the container.
java.lang.OutOfMemoryError: PermGen space
Exception in thread "http-bio-8080-exec-167" java.lang.OutOfMemoryError: PermGen space
Ssh все еще отзывчив, и я могу посмотреть на журнал Tomcat таким образом. Чтобы преодолеть это и продолжить, я выхожу из ssh-соединения и перезапускаю экземпляр CEP в Fi-Cloud.
Является ли процедура, которую я использую для повторной загрузки и повторного запуска определения, неуместной? Должен ли я придерживаться иного подхода к разработке?
Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.
Спасибо
1 ответ
Когда вы обновляете определение, с которым CEP уже работает, и хотите, чтобы механизм CEP работал с обновленным определением, вам необходимо:
Экспортируйте определение, используя экспорт инструмента авторинга (как вы это сделали)
Остановите двигатель, используя REST PUT
PUT //host:8080/ProtonOnWebServerAdmin/resources/instances/ProtonOnWebServer {"action":"ChangeState","state":"stop"}
Запустите двигатель, используя REST PUT
PUT //host:8080/ProtonOnWebServerAdmin/resources/instances/ProtonOnWebServer {"action":"ChangeState","state":"start"}
Вам не нужно активировать действие "ChangeDefinitions", так как это то же имя определения, с которым движок уже работает.
Активация действия "ChangeDefinitions" влияет только на следующий запуск CEP и не влияет на текущий запуск.
Это ответ на ваш вопрос о том, как вы должны обновить определение CEP. Надеюсь, это решит вашу проблему.