RESTHEART 抛出异常
RESTHEART throwing exceptions
我们实施了 RESTHEART 以从 MongoDB 获取聚合数据。对于单个请求,数据很好,符合要求。当我们开始在 JMeter 请求下通过在 MongoDB 上添加负载来检查这一点时,我们在后端遇到了异常。
我们与 MongoDB 工程师分享了这些异常情况,他们表示这可能是因为 resheart api 问题。
以前有人遇到过这些问题吗?
@Andrea Di Cesare,如有任何帮助,我们将不胜感激。
详情如下
下面是示例 URI,它因“内存不足”而出错。
休息 API 通话
http://ftc-lbeapoc202:8080/statdata/InsStatData/_aggrs/getStatDataByIssuerIdSectionName?avars={'issuerId':66915,'sectionName':'SCDPT1'}
http://ftc-lbeapoc202:8080/statdata/InsStatData/_aggrs/getStatDataByIssuerIdSectionName?avars={'issuerId':66915,'sectionName':'SCDPT1','year':2014}
服务器日志错误:
[[1;31mERROR^[[0;39m org.restheart.handlers.ErrorHandler - Error handling
the request
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3554)
at java.util.Arrays.copyOf(Arrays.java:3525)
at java.util.ArrayList.grow(ArrayList.java:272)
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:246)
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:238)
at java.util.ArrayList.add(ArrayList.java:469)
at org.bson.codecs.BsonDocumentCodec.decode(BsonDocumentCodec.java:84)
at org.bson.codecs.BsonDocumentCodec.decode(BsonDocumentCodec.java:41)
at com.mongodb.operation.CommandResultArrayCodec.decode(CommandResultArrayCodec.java:52)
at com.mongodb.operation.CommandResultDocumentCodec.readValue(CommandResultDocumentCodec.java:53)
at org.bson.codecs
Error in response:
{
· _exceptions:
[
o {
§ exception: "java.lang.OutOfMemoryError",
§ exception message: "Java heap space"
}
],
· http status code: 500,
· http status description: "Internal Server Error",
· message: "Error handling the request, see log for more
information"
}
Thanks!
RESTHeart 是一个普通的 Java 应用程序,您看到的是一个 java.lang.OutOfMemoryError
异常。这意味着您的测试正在使用所有可用的 JVM 堆 space,因此 JVM 内存不足。
默认:
Java 8 takes Larger of 1/6th of your physical memory for your -Xms<size>
(Minimum HeapSize) and Smaller of 1/4th of your physical memory for your -Xmx<size>
(Maximum HeapSize).
在 Linux 或 Mac OS 系统中,您可以使用以下方法检查默认堆大小:
java -XX:+PrintFlagsFinal -version | grep -iE HeapSize
如果您的服务器有足够的可用物理内存,您可以尝试 运行RESTHeart 使用更大的堆,将 -Xmn<size>
参数添加到命令行。
例如:java -Xmx3072m
会将 JVM 的最大堆大小设置为 3GB。
里夫:https://docs.oracle.com/cd/E15523_01/web.1111/e13814/jvm_tuning.htm#PERFM164
我们实施了 RESTHEART 以从 MongoDB 获取聚合数据。对于单个请求,数据很好,符合要求。当我们开始在 JMeter 请求下通过在 MongoDB 上添加负载来检查这一点时,我们在后端遇到了异常。 我们与 MongoDB 工程师分享了这些异常情况,他们表示这可能是因为 resheart api 问题。 以前有人遇到过这些问题吗?
@Andrea Di Cesare,如有任何帮助,我们将不胜感激。
详情如下 下面是示例 URI,它因“内存不足”而出错。 休息 API 通话 http://ftc-lbeapoc202:8080/statdata/InsStatData/_aggrs/getStatDataByIssuerIdSectionName?avars={'issuerId':66915,'sectionName':'SCDPT1'} http://ftc-lbeapoc202:8080/statdata/InsStatData/_aggrs/getStatDataByIssuerIdSectionName?avars={'issuerId':66915,'sectionName':'SCDPT1','year':2014}
服务器日志错误:
[[1;31mERROR^[[0;39m org.restheart.handlers.ErrorHandler - Error handling
the request
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3554)
at java.util.Arrays.copyOf(Arrays.java:3525)
at java.util.ArrayList.grow(ArrayList.java:272)
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:246)
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:238)
at java.util.ArrayList.add(ArrayList.java:469)
at org.bson.codecs.BsonDocumentCodec.decode(BsonDocumentCodec.java:84)
at org.bson.codecs.BsonDocumentCodec.decode(BsonDocumentCodec.java:41)
at com.mongodb.operation.CommandResultArrayCodec.decode(CommandResultArrayCodec.java:52)
at com.mongodb.operation.CommandResultDocumentCodec.readValue(CommandResultDocumentCodec.java:53)
at org.bson.codecs
Error in response:
{
· _exceptions:
[
o {
§ exception: "java.lang.OutOfMemoryError",
§ exception message: "Java heap space"
}
],
· http status code: 500,
· http status description: "Internal Server Error",
· message: "Error handling the request, see log for more
information"
}
Thanks!
RESTHeart 是一个普通的 Java 应用程序,您看到的是一个 java.lang.OutOfMemoryError
异常。这意味着您的测试正在使用所有可用的 JVM 堆 space,因此 JVM 内存不足。
默认:
Java 8 takes Larger of 1/6th of your physical memory for your
-Xms<size>
(Minimum HeapSize) and Smaller of 1/4th of your physical memory for your-Xmx<size>
(Maximum HeapSize).
在 Linux 或 Mac OS 系统中,您可以使用以下方法检查默认堆大小:
java -XX:+PrintFlagsFinal -version | grep -iE HeapSize
如果您的服务器有足够的可用物理内存,您可以尝试 运行RESTHeart 使用更大的堆,将 -Xmn<size>
参数添加到命令行。
例如:java -Xmx3072m
会将 JVM 的最大堆大小设置为 3GB。
里夫:https://docs.oracle.com/cd/E15523_01/web.1111/e13814/jvm_tuning.htm#PERFM164