1

在 Fi-Cloud 的 CEP 中进行开发时,我遇到了一个反复发生的问题。当我试图开发一个定义来执行任务时,CEP 的服务器和创作工具停止响应,尽管 ssh 仍然响应。

这个问题在我开发时发生。我正在使用 AuthoringTool 一点一点地更改定义,然后通过创作工具的导出功能将其重新上传到服务器。为了在每次更改时使用新定义重新启动质子,我使用 Google 的 Postman 进行这个单一操作:

-PUT(网址:http://{ip}:8080/ProtonOnWebServerAdmin/resources/instances/ProtonOnWebServer)标头:'Content-Type':'application/json';正文:{ “action”:“ChangeDefinitions”,“definitions-url”:“/ProtonOnWebServerAdmin/resources/definitions/Definition_Name” }

同时,我使用三个 ssh 实例登录,一个用于监视在 /opt/tomcat10/sample/ 上创建的文件和其他内容,另外两个用于 'tail -f' 定义写入的日志文件,在处理事件时:一个日志记录接收到的事件,另一个日志记录 EPAgent 检测到的事件。

我在开发过程中一遍又一遍地迭代这些过程,最终 CEP 服务器和创作工具停止响应。

通过“拖尾”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 的实例。

我用来重新上传和重新运行定义的程序是否不合适?我应该采取不同的开发方法吗?

4

1 回答 1

1

当您更新 CEP 已经使用的定义,并且您希望 CEP 引擎使用更新的定义时,您需要:

  1. 使用创作工具导出定义(如您所做的那样)

  2. 使用 REST PUT 停止引擎运行

    PUT //host:8080/ProtonOnWebServerAdmin/resources/instances/ProtonOnWebServer
    {"action":"ChangeState","state":"stop"}
    
  3. 使用 REST PUT 启动引擎

    PUT //host:8080/ProtonOnWebServerAdmin/resources/instances/ProtonOnWebServer
    {"action":"ChangeState","state":"start"}
    

您不需要激活“ ChangeDefinitions”操作,因为它与引擎已经在使用的定义名称相同。

激活“ChangeDefinitions”动作,只影响 CEP 的下一次运行,对当前运行没有影响。

这回答了您应该如何更新 CEP 定义的问题。希望它能解决你的问题。

于 2015-09-02T11:19:23.873 回答