WSO2 CEP - 内存不足

2024-02-07

我们在 CEP 上看到内存不足错误。线程转储显示大约有 32000 个线程在监视器上休眠。此外,即使 CEP JVM 选项指定在内存不足时生成 HeapDump,我们也没有看到生成任何堆转储。 请指教。 (CEP JVM -Xms256m -Xmx1536m )

1) Cassandra 在此 CEP 上被禁用
2)CEP版本为2.1.0
3) CEP 由 WSO2 ESB 领导(使用 BAM 中介器)。
4) 除了向 CEP 发送实际的有效负载数据外,ESB 还向 CEP 发送定期心跳(每 15 ec)。

5) 我们还在 ESB 上配置了 JMX 代理,每 15 分钟监控一次 CEP(CPU/内存线程)
6) 即使指定了 -XX:HeapDumpPath= 参数也找不到堆转储

  • 在此 OOM 之前,CEP 已连续运行 7 天。重新启动后,我们观察到线程数以每天约 4000-5000 个线程的速度稳步增加

CEP 日志..

[2013-06-10 05:31:49,040] ERROR -  Thread Thread[ActiveMQ InactivityMonitor  WriteCheckTimer,5,main] died {org.apache.zookeeper.server.NIOServerCnxn}
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:640)
at  java.util.concurrent.ThreadPoolExecutor.addIfUnderMaximumPoolSize(ThreadPoolExecutor.java:727)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:657)
at org.apache.activemq.transport.AbstractInactivityMonitor.writeCheck(AbstractInactivityMonitor.java:153)
at org.apache.activemq.transport.AbstractInactivityMonitor$2.run(AbstractInactivityMonitor.java:117)
at org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
[2013-06-10 05:31:49,040] ERROR -  Thread Thread[ActiveMQ InactivityMonitor WriteCheckTimer,5,main] died {org.apache.zookeeper.server.NIOServerCnxn}
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:640)
at java.util.concurrent.ThreadPoolExecutor.addIfUnderMaximumPoolSize(ThreadPoolExecutor.java:727)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:657)
at org.apache.activemq.transport.AbstractInactivityMonitor.writeCheck(AbstractInactivityMonitor.java:153)
at org.apache.activemq.transport.AbstractInactivityMonitor$2.run(AbstractInactivityMonitor.java:117)
at org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)

CEP 中配置的一些查询

<cep:query name="xxxBuildUpQuery">
<cep:expression><![CDATA[from  xxxCEPIntgDataStream[interfaceInformationInterfaceName=='xxx-xxx' or interfaceInformationInterfaceName=='xxx-xxx'or 
                               interfaceInformationInterfaceName=='xxx-xxx' or interfaceInformationInterfaceName=='xxx-xxx' or 
                               interfaceInformationInterfaceName=='xxx-xxx' or interfaceInformationInterfaceName=='xxxx-xxx' or 
                               interfaceInformationInterfaceName=='xxx-xxx' or 
                               interfaceInformationInterfaceName=='xxx-xxx' ]#window.time(60000)
insert into buildUpStream interfaceInformationInterfaceName, count(interfaceInformationxxxId) as noOfInflowMsgs group by interfaceInformationInterfaceName]]></cep:expression>
<cep:output brokerName="activemqJmsBroker" topic="xxxBuildUpInfoTopic">
  <cep:xmlMapping>
    <xxxAnalytics>
      <buildUpInfo>
        <interfaceName>{interfaceInformationInterfaceName}</interfaceName>
        <buildUpPerMin>{noOfInflowMsgs}</buildUpPerMin>
      </buildUpInfo>
    </xxxAnalytics>
  </cep:xmlMapping>
</cep:output>
</cep:query>
<cep:query name="xxxQueueDepthQuery">
<cep:expression><![CDATA[from xxxIntgrQueueDepthData_v1
insert into xxxIntgrQueueDepthStream flowName,appName, queueDepth]]>  </cep:expression>
<cep:output brokerName="activemqJmsBroker" topic="xxxIntgrQueueDepthTopic">
  <cep:xmlMapping>
    <xxxAnalytics>
      <queueDepthInfo>
        <flowName>{flowName}</flowName> 
        <appName>{appName}</appName>
        <depth>{queueDepth}</depth>
      </queueDepthInfo>
    </xxxAnalytics>
  </cep:xmlMapping>
</cep:output>
</cep:query>
<cep:query name="xxxClockDataQuery">
  <cep:expression><![CDATA[from testStream
insert into testOutClockDataStream AEDateTime]]></cep:expression>
  <cep:output brokerName="activemqJmsBroker" topic="xxxClockDataTopic">
    <cep:xmlMapping>
      <xxxClockFeed>
        <data>
          <XXDateTime>{XXDateTime}</XXDateTime>
        </data>
      </xxxClockFeed>
    </cep:xmlMapping>
  </cep:output>
 </cep:query>
 <cep:query name="xxxSimltrPaymntAvgQuery_1">
  <cep:expression><![CDATA[from xxxCEPIntgDataStream#window.time(15000)
    insert into xxxSimltrPymntAvgData avg(amount) as avgAmount, currency group by currency]]></cep:expression>
  <cep:output brokerName="activemqJmsBroker" topic="xxxAvgPaymntDetails">
    <cep:xmlMapping>
      <xxxAnalytics>
        <avgPaymentData>
          <avgAmount>{avgAmount}</avgAmount>
          <currency>{currency}</currency>
        </avgPaymentData>
      </xxxAnalytics>
    </cep:xmlMapping>
  </cep:output>

谢谢 拉吉夫·帕蒂尔


我发现 Siddhi Manager 启动了一个计划线程池,其中 Integer.MAX_VALUE 作为核心池大小。这意味着每个请求都会创建一个新线程,没有超时策略。 (参考:线程池执行器 http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html)

在 WSO2 修复此问题之前,您可以更改此线程池的大小。 P.e.,在类 org.wso2.siddhi.core.SiddhiManager 中更改行:

this.siddhiContext.setScheduledExecutorService(Executors.newScheduledThreadPool(Integer.MAX_VALUE));

(第 77 行悉地经理 https://svn.wso2.org/repos/wso2/carbon/platform/tags/4.0.7/dependencies/commons/siddhi/1.1.0-wso2v1/modules/siddhi-core/src/main/java/org/wso2/siddhi/core/SiddhiManager.java版本 1.1.0-wso2v1)

对于这个:

this.siddhiContext.setScheduledExecutorService(Executors.newScheduledThreadPool(100));

此更改将创建一个大小为 100 的核心池、最大池大小为 Integer.MAX_VALUE,并且空闲线程(超过核心池大小)将在完成后立即删除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WSO2 CEP - 内存不足 的相关文章

  • WSO2 Identity Server Service Pack 的来源

    WSO2 Identity Server 5 0 0 的 Service Pack 1 的源是否公开可用 我在哪里可以找到 SVN 存储库中的源代码 Service Pack 没有任何源代码 服务包是通过聚合为 WSO2 中的产品提供的补丁
  • WSO2IS 5.11.0 - 访问 /myaccount 或 /console 网页时出现黑屏

    我部署在 Docker 容器中测试 WSO2 5 11 0 的最新版本 除了 控制台 和 我的帐户 服务提供商的主机名和回调URL以匹配我的主机名之外 我没有更改默认配置中的任何内容 访问碳控制台没问题 但当我试图达到https
  • WSO2签名系统服务应用程序

    我想将我的所有设备设置为 COPE WSO2 EMM 设置已完成并且工作正常 剩下的就是使用固件密钥对系统服务应用程序进行签名 我仅使用 Google 设备 Android 设备 摩托罗拉 G2 从那里我可以找到用于签署应用程序的密钥和密码
  • Perseo fe docker 实例无法启动

    我面临以下问题 我正在尝试将 FIWARE Perseo 作为 docker 实例部署到我的 Centos 7 服务器 尽管 perseocore 实例运行没有问题 但 perseo 前端的情况却不同 它已创建但无法启动 从日志中可以清楚地
  • 在WSO2 ESB 4.7.0中,我们可以在接收序列中进行JMS回滚吗?

    我已经在 WSO2 ESB 4 7 0 中配置了带有事务和 CLIENT ACKNOWLEDGE 的 Apache ActiveMQ axis2 xml 配置是
  • startOnLoad 未按预期工作

    我创建了基于 VFS 的代理服务 如下所示 但属性startOnLoad false 没有按预期工作 即使在部署代理之后 我们也需要手动单击 激活 然后单击 禁用 以永久禁用 VFX 代理 但代理状态显示为已禁用 但代理仍在后端轮询 FTP
  • pmml:predict WSO2 流处理器不存在扩展

    我正在按照 WSO2 Stream Processor Studio 教程来练习 Siddhi 到目前为止 我已经成功解决了教程中包含的所有错误 然而 我被困在第 12 个教程 进行实时预测 中 Siddhi 应用程序是 App name
  • WSO2 Synapse:设置 URL 参数

    我正在尝试做一些看似简单但无法使其发挥作用的事情 基本上我希望 WSO2 API 管理器向 REST 调用添加 URL 参数 设置和问题 我安装了 WSO2 API 管理器 我还有一个 Tomcat 运行着一个名为一些servlet它只是记
  • wso2 API 管理器 |如何将客户端证书关联到后端/目标端点

    我们有一个 api 后端 在访问 api 时需要提供客户端证书 我们已将客户端证书以及所有根 CA 和中间证书添加到repository resources security client truststore jks 重新启动服务器 我相
  • 关于 WSO2 API Manager 数据源

    我现在正在执行 WSO2 API 管理器 Analytics 2 0 POC 当我将数据源从 H2 更改为 Oracle 时 在 wso2am 2 0 1 SNAPSHOT 中 有 2 个数据源配置文件 master datasources
  • WSO2 API Manager - 移动应用程序如何连接到 API Manager?

    我们有一个移动应用程序 需要通过 WSO2 API Manager 来访问一些 API 由于oauth2身份验证 我们需要在移动应用程序中存储用户名和密码 安全吗 例如 可以使用用户名和密码登录API Store 对于这种情况有其他解决方案
  • WSO2 API Manager 作为 2 个实例一体化设置

    我最近将 WSO2 API Manager 2 0 0 部署为 2 个实例一体化集群 使用 Hazelcast AWS 方案 并使用 mysql 数据源 如此处指定link https docs wso2 com display AM200
  • WSO2 ESB:WSO2 REST API 调用中的 XML 响应未解析

    我在 WSO2 ESB 4 8 1 代理服务中处理来自 REST API 的纯 XML 响应时遇到问题 我的 outSequence 显然期望 API 调用结果有效负载是 SOAP 消息 但事实并非如此 纯 XML 从而在进一步处理它时导致
  • WSO2 API Manager 的跨域问题

    我们为客户开发了一些API 并通过API Manager发布了它们 我们为客户提供了一些运行良好的 PHP 代码示例 唯一的问题是他们通过 AJAX 在与 AM 相关的域不同的域中使用这些 API 这是跨域问题吗 我尝试使用以下标头在 AP
  • 基于 OpenID 的 SSO 和 WSO2 身份服务器

    无法使用 WSO2 身份服务器获得基于 OpenID 的 SSO 我关注了 Suresh Aththanayaka 给出的博客文章 但是进入后https localhost 9443 openid admin作为您的 OpenID 标识符
  • wso2 svn 更新 - E205011:处理一个或多个外部定义时发生故障

    我在尝试着svn update4 0 0平台分支 却屡次碰到错误 E205011 Failure occurred processing one or more externals definitions My svn info outpu
  • 具有 OpenId Connect 的 WSO2 身份服务器

    我正在尝试将 WSO2 Identity Server 5 1 0 与 Asp Net MVC 结合使用 作为概念证明 我在 Visual Studio 2015 中创建了一个示例 asp net MVC 项目 按照 WSO2 指南 我已根
  • 证书中的主机名不匹配:<>!=<> WSO2 APIM

    我有一个 https 端点 我需要从 wso2 API 管理器访问它 使用 1 10 我已经将证书文件添加到 client truststore jks 文件中 但现在它给出了如下错误 hostname in certificate did
  • 选择简单 Apache Synapse 与 WSO2 的标准

    在评估各种 ESB 时 我遇到了 Apache Synapse 和 WSO2 在 WSO2 中提到 WSO2 完全使用 Synapse 并构建在其之上 但是我仍然不清楚 WSO2 比 Synapse 提供哪些附加功能 除了商业支持 我看到的
  • WSO2 ESB 的自动 NTLM 身份验证

    我有一个 WCF Web 服务位于使用 NTLM 身份验证保护的客户端 IIS 服务器上 我无法控制该服务器上的身份验证配置 我需要将我的 WSO2 ESB 服务器与此服务集成 但我找不到让 ESB 自动进行身份验证的方法 我已成功通过 E

随机推荐

  • 有什么理由使用同步 XMLHttpRequest 吗?

    似乎大多数人都使用 XMLHttpRequest 执行异步请求 但显然 能够执行同步请求的事实表明可能有这样做的正当理由 那么这个合理的理由可能是什么 同步 XHR 对于保存用户数据很有用 如果您处理beforeunload您可以在用户关闭
  • 文本框不可点击但可编辑

    我有一个带有 10 个文本框的小表单 我将它们设置为当前正确的 Tab 顺序 就像我希望它们按 Tab 到的方式一样 我想知道是否有一种方法可以设置文本框 以便它们不能被选择进行编辑 除非它们被选项卡插入 即 我不希望最终用户能够单击文本框
  • 如何在Oracle中定义ON COMMIT触发器?

    oracle数据库中是否有任何方法可以定义触发器 当指定的表发生更改时 该触发器将在提交之前同步触发 如果抛出异常则回滚 Oracle中没有ON COMMIT触发机制 不过 还有一些解决方法 您可以使用带有 ON COMMIT REFRES
  • 您最喜欢的 Windbg 提示/技巧是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 等待文件可供 Win32 读取

    我正在通过调用查看目录ReadDirectoryChangesW同步地 当新文件可用时 我尝试立即访问它CreateFile with GENERIC READ and FILE SHARE READ 但这给了我ERROR SHARING
  • 在MySQL中使用存储过程时遇到两个问题

    下面是我正在其中进行利息计算的存储过程的示例代码 该代码不可执行 因为根据在游标声明之前定义创建临时表块时发现其获取问题 但如果我最近在游标声明之后定义了相同的内容 那么它会成功执行 1 我的问题是我在光标内使用该表 所以我必须在光标后定义
  • 网页抓取,获取空列表

    我很难用我的网络抓取代码找出正确的路径 我正在尝试从中获取不同的信息http financials morningstar com company profile c action t AAPL http financials mornin
  • “ipython”选项卡自动完成功能不适用于导入的模块

    IPython 上的制表符补全似乎不起作用 例如 import numpy numpy
  • 如何使用 FTPS/TLS 1.2 版模拟 FTP 连接?

    我有一个 Python 代码 使用 HTTPS 和 TLS 版本 1 2 从 FTP 读取一些文件 这是函数 凭证是从 AWS 秘密管理器读取的 def ftp connection host username password try f
  • Identity Server 3 - Ajax 调用上的 401 而不是 302

    我有一个 Web api mvc 混合应用程序 我已将其配置为使用 cookie 身份验证 这对于应用程序的 mvc 部分效果很好 Web api 确实强制执行授权 但不是返回401 Unauthorised它返回一个302 Found并重
  • 当我使用 doReturn(..).when(....) 时,PowerMockito 正在调用该方法

    我是 PowerMockito 的新手 它显示的行为我不明白 以下代码解释了我的问题 public class ClassOfInterest private Object methodIWantToMock String x String
  • QT和MFC哪个更好学[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将对象添加到 ArrayList 指定索引处

    我认为这是一个相当简单的问题 但我不知道如何正确地做到这一点 我有一个空的数组列表 ArrayList list new ArrayList 我有一些对象 我想在其中添加对象 并且每个对象必须位于某个位置 然而 有必要将它们按每种可能的顺序
  • Inner Join 是否存在性能问题?

    目前我在我的 sp 中使用了很多内部联接 大约 7 个 它对 sp 性能有任何影响吗 左外连接是否比内连接提供更好的性能 另一件事是 如果我连接两个表 a 和 b 其中列 id 和 id1 都不可为空 我想在这里我可以进行内部联接 因为这些
  • 在 HTML 选择标签中找到默认选择的选项?

    我在网上找到了清除表单的代码 但它没有用于选择框的内容 使用 jquery 当我重置表单时 我尝试添加代码来选择选择框中的默认选项 我认为找到默认值的唯一方法是查找 SELECTED 选项所在的位置 然后我发现 当用户选择其他内容时 jqu
  • 如何确保即使在异常终止时也会调用 UnhookWindowsHookEx?

    不幸的是 MSDN 对此还不够清楚 我正在编写一个使用全局钩子的程序 我担心如果程序异常终止 崩溃 被用户杀死等 会发生什么 当进程终止时 Windows 是否会自动取消进程安装的全局挂钩 如果没有 是否可以在另一个进程中调用UnhookW
  • 升级到 bootstrap-sass 3.2.0 时出现问题

    将 bootstrap sass gem 升级到时是否还需要引用 配置其他内容 gt 3 2 0 使用 RubyMine 6 3 作为编辑器 并在 Gemfile 中添加以下内容 ruby 2 1 2 gem rails 4 1 1 gem
  • Jinja2 按空格分割字符串

    我正在使用 Jinja2 模板引擎 pelican 我有一个字符串说 a 1 我正在寻找一种方法将该字符串分成两部分 使用空格作为分隔符 所以我正在寻找的最终结果是一个变量 它以数组的形式保存两个值 例如str 0 计算结果为 a str
  • 为分层模型创建高效的数据库查询(django)

    考虑这个 django 模型 class Source models Model Some other fields type models ForeignKey Type class Type models Model Some othe
  • WSO2 CEP - 内存不足

    我们在 CEP 上看到内存不足错误 线程转储显示大约有 32000 个线程在监视器上休眠 此外 即使 CEP JVM 选项指定在内存不足时生成 HeapDump 我们也没有看到生成任何堆转储 请指教 CEP JVM Xms256m Xmx1