在 WSO2BPS 上执行 LoadTest 时出现 NullPointerExceptions

NullPointerExceptions while executing LoadTest on WSO2BPS

在 WSO2 BPS 3.2.0 上执行负载测试时,我们 运行 解决了这个问题。

让我告诉你更多关于我们的项目和我们的行动。 我们的 BPS 流程旨在管理与 3 个系统的一些交互。基本上它是 "spread" 两部分 - 第一个是在其中一个系统中创建实例,然后稍等片刻,然后是实例上下文中的 SELECT OFFER。 在现实生活中,它看起来像:用户想要获得产品,应用程序向系统询问报价,然后用户从可用的报价中选择报价。 在 BPS 中,第一部分是一个直接的过程,第二部分分布在两个流程上——一个是用新的报价刷新信息,另一个是等待用户选择其中一个。 我们的目标是在负载测试中支持大约 1000-1500 个模拟线程。外部系统由 LoadUI 执行的模型模拟。

如果我们在进程的部署描述符中禁用 "Process-Level Monitoring Events"(将其设置为 "none"),我们就可以实现我们的目标。几个小时一切顺利。

但是如果我们启用此功能(并且我们需要启用),很快就会出现错误(大约 100-200 运行):

[2015-07-28 17:47:02,573] 错误 {org.wso2.carbon.bpel.core.ode.integration.BPELProcessProxy} - MEX null 的错误处理响应 java.lang.NullPointerException 在 org.wso2.carbon.bpel.core.ode.integration.BPELProcessProxy.onResponse(BPELProcessProxy.java:402) 在 org.wso2.carbon.bpel.core.ode.integration.BPELProcessProxy.onAxisServiceInvoke(BPELProcessProxy.java:187) 在 [....等等....]

在第一次出现此错误后运行出现另一种类型的错误 - 其他线程在超时后失败。

数据库好像没问题(对了,是MySQL5.6.25)。仪表板显示没有极端水平的输入或输出。

所以我认为 BPS 本身就是一个瓶颈。我们给了它 8gb 的堆,它的 conf 选项设置为极端数量的线程(如果可能的话设置负值,如果不是 - 就像 100000 一样大得离谱)。

有人遇到过这个问题吗?非常感谢任何帮助。

BPS 3.5.0版本解决,参考release-notes