使用arrow flight sql 查询一段时间后报 OOM

Viewed 20

doris版本 selectdb-doris-2.1.8-3-381787f839
使用arrow flight sql 查询一段时间 报 OOM, 如下:
create prepared statement failed, Failure allocating buffer., io.netty.util.internal.OutOfDirectMemoryError: failed to allocate 4194304 byte(s) of direct memory (used: 16802382103, max: 16804741120), error code: null, error msg:
at org.apache.arrow.driver.jdbc.shaded.org.apache.calcite.avatica.Helper.createException(Helper.java:56)
at org.apache.arrow.driver.jdbc.shaded.org.apache.calcite.avatica.Helper.createException(Helper.java:41)
at org.apache.arrow.driver.jdbc.shaded.org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:164)
at org.apache.arrow.driver.jdbc.shaded.org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:228)
at org.example.JdbcService.executeQueryArrayNode(JdbcService.java:58)
at org.example.ArrowTest.runSql(ArrowTest.java:61)
at org.example.ArrowTest.main(ArrowTest.java:13)
Caused by: org.apache.arrow.driver.jdbc.shaded.org.apache.arrow.flight.FlightRuntimeException: INTERNAL: create prepared statement failed, Failure allocating buffer., io.netty.util.internal.OutOfDirectMemoryError: failed to allocate 4194304 byte(s) of direct memory (used: 16802382103, max: 16804741120), error code: null, error msg:
at org.apache.arrow.driver.jdbc.shaded.org.apache.arrow.flight.CallStatus.toRuntimeException(CallStatus.java:121)
at org.apache.arrow.driver.jdbc.shaded.org.apache.arrow.flight.grpc.StatusUtils.fromGrpcRuntimeException(StatusUtils.java:161)
at org.apache.arrow.driver.jdbc.shaded.org.apache.arrow.flight.grpc.StatusUtils$1.next(StatusUtils.java:249)
at org.apache.arrow.driver.jdbc.shaded.org.apache.arrow.flight.sql.FlightSqlClient$PreparedStatement.(FlightSqlClient.java:1021)
at org.apache.arrow.driver.jdbc.shaded.org.apache.arrow.flight.sql.FlightSqlClient.prepare(FlightSqlClient.java:767)
at org.apache.arrow.driver.jdbc.shaded.org.apache.arrow.flight.sql.FlightSqlClient.prepare(FlightSqlClient.java:746)
at org.apache.arrow.driver.jdbc.client.ArrowFlightSqlClientHandler.prepare(ArrowFlightSqlClientHandler.ja

这时使用mysql协议进行查询没有问题, 换另外一个fe节点进行查询也没有问题。 重启该fe节点后查询恢复, 但是过一段时间后同样的错误再次出现。
fe的错误日志如下:
bf3d2f7bab88ace4f08be6b990ce2e9.png

0 Answers