Fiware CEP 服务器停止响应
Fiware CEP server stops responding
在 Fi-Cloud 的 CEP 开发过程中,我遇到了一个反复发生的问题。当我尝试制定执行任务的定义时,CEP 的服务器和创作工具停止响应,尽管 ssh 仍在响应。
这个问题是我开发的时候出现的。我正在使用 AuthoringTool 一点一点地更改定义,然后我 re-upload 通过创作工具的导出功能将其发送到服务器。
为了在每次更改质子时使用新定义重新启动质子,我使用 Google 的 Postman 进行此单一操作:
-PUT (url:http://{ip}:8080/ProtonOnWebServerAdmin/resources/instances/ProtonOnWebServer)
header: 'Content-Type' : 'application/json'; body:{"action":"ChangeDefinitions","definitions-url":“/ProtonOnWebServerAdmin/resources/definitions/Definition_Name”}
同时,我使用三个 ssh 实例登录,一个用于监视在 /opt/tomcat10/sample/ 上创建的文件和其他内容,另外两个用于 'tail -f ' 日志文件随着事件的处理,定义写入:一个日志用于接收事件,另一个日志用于 EPAgent 检测到的事件。
我在开发过程中反复执行这些过程,最终 CEP 服务器和创作工具停止响应。
通过"tailing" 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 连接并在 Fi-Cloud.
中重新启动 CEP 实例
我对 re-upload 和 re-run 定义使用的程序是否不合适?我应该采用不同的开发方法吗?
当您更新 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 定义的问题。
希望它能解决您的问题。
在 Fi-Cloud 的 CEP 开发过程中,我遇到了一个反复发生的问题。当我尝试制定执行任务的定义时,CEP 的服务器和创作工具停止响应,尽管 ssh 仍在响应。
这个问题是我开发的时候出现的。我正在使用 AuthoringTool 一点一点地更改定义,然后我 re-upload 通过创作工具的导出功能将其发送到服务器。 为了在每次更改质子时使用新定义重新启动质子,我使用 Google 的 Postman 进行此单一操作:
-PUT (url:http://{ip}:8080/ProtonOnWebServerAdmin/resources/instances/ProtonOnWebServer) header: 'Content-Type' : 'application/json'; body:{"action":"ChangeDefinitions","definitions-url":“/ProtonOnWebServerAdmin/resources/definitions/Definition_Name”}
同时,我使用三个 ssh 实例登录,一个用于监视在 /opt/tomcat10/sample/ 上创建的文件和其他内容,另外两个用于 'tail -f ' 日志文件随着事件的处理,定义写入:一个日志用于接收事件,另一个日志用于 EPAgent 检测到的事件。
我在开发过程中反复执行这些过程,最终 CEP 服务器和创作工具停止响应。
通过"tailing" 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 连接并在 Fi-Cloud.
中重新启动 CEP 实例我对 re-upload 和 re-run 定义使用的程序是否不合适?我应该采用不同的开发方法吗?
当您更新 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 定义的问题。 希望它能解决您的问题。