server执行一段时间后日志报OOM
配置
powerJob版本:4.0.1
##现象描述
项目压测过程中发现运行一段时间后,调试面板无法在线查看日志,server端内存打满,但是任务调度看起来不影响 只是日志存储失效
##日志信息
at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) ~[h2-1.4.200.jar:1.4.200]
at org.h2.message.DbException.get(DbException.java:194) ~[h2-1.4.200.jar:1.4.200]
at org.h2.engine.Session.getTransaction(Session.java:1792) ~[h2-1.4.200.jar:1.4.200]
at org.h2.engine.Session.getStatementSavepoint(Session.java:1804) ~[h2-1.4.200.jar:1.4.200]
at org.h2.engine.Session.setSavepoint(Session.java:915) ~[h2-1.4.200.jar:1.4.200]
at org.h2.command.Command.executeUpdate(Command.java:244) ~[h2-1.4.200.jar:1.4.200]
at org.h2.jdbc.JdbcConnection.rollbackInternal(JdbcConnection.java:1530) ~[h2-1.4.200.jar:1.4.200]
at org.h2.jdbc.JdbcConnection.rollback$original$g1zJIQ0s(JdbcConnection.java:561) ~[h2-1.4.200.jar:1.4.200]
at org.h2.jdbc.JdbcConnection.rollback$original$g1zJIQ0s$accessor$5FrwePGb(JdbcConnection.java) ~[h2-1.4.200.jar:1.4.200]
at org.h2.jdbc.JdbcConnection$auxiliary$oBfFg9Mk.call(Unknown Source) ~[h2-1.4.200.jar:1.4.200]
at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:86) ~[skywalking-agent.jar:8.1.0]
at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java) ~[h2-1.4.200.jar:1.4.200]
at com.zaxxer.hikari.pool.ProxyConnection.rollback(ProxyConnection.java:396) ~[HikariCP-3.4.5.jar:?]
at com.zaxxer.hikari.pool.HikariProxyConnection.rollback(HikariProxyConnection.java) ~[HikariCP-3.4.5.jar:?]
at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.rollback(AbstractLogicalConnectionImplementor.java:121) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.rollback(JdbcResourceLocalTransactionCoordinatorImpl.java:304) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
at org.hibernate.engine.transaction.internal.TransactionImpl.rollback(TransactionImpl.java:142) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
at org.springframework.orm.jpa.JpaTransactionManager.doRollback(JpaTransactionManager.java:561) ~[spring-orm-5.2.8.RELEASE.jar:5.2.8.RELEASE]
... 33 more
Caused by: java.lang.IllegalStateException: java.lang.OutOfMemoryError: Direct buffer memory [1.4.200/3]
at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:950) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVStore.store(MVStore.java:1338) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVStore.store(MVStore.java:1312) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVStore.tryCommit(MVStore.java:1272) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVStore.beforeWrite(MVStore.java:2463) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVMap.beforeWrite(MVMap.java:1028) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVMap.operate(MVMap.java:1792) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVMap.rewrite(MVMap.java:614) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVMap.rewritePage(MVMap.java:775) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVMap.rewrite(MVMap.java:734) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVMap.rewrite(MVMap.java:748) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVMap.rewrite(MVMap.java:748) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVMap.rewrite(MVMap.java:748) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVMap.rewrite(MVMap.java:710) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVStore.compactRewrite(MVStore.java:2137) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVStore.rewriteChunks(MVStore.java:2026) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVStore.doMaintenance(MVStore.java:2844) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVStore.writeInBackground(MVStore.java:2788) ~[h2-1.4.200.jar:1.4.200]
at org.h2.mvstore.MVStore$BackgroundWriterThread.run(MVStore.java:3290) ~[h2-1.4.200.jar:1.4.200]
Caused by: java.lang.OutOfMemoryError: Direct buffer memory
at java.nio.Bits.reserveMemory(Bits.java:694) ~[?:1.8.0_181]
at java.nio.DirectByteBuffer.
额外信息&配置补充
任务量在100个左右,都是cron的方式,每过整5分钟一起执行 目前server端一些数据库连接配置 spring.datasource.core.hikari.maximum-pool-size=20 spring.datasource.core.hikari.minimum-idle=5
大佬帮忙问题出在哪里,如何调整!!3Q!!
Direct buffer memory 分配了多少?JVM 的内存信息方便贴一下吗?
还有就是在线日志量不要太大了。 其实任务调试稳定后,建议关闭调整在线日志级别,或者直接改为本地日志(直接在控制台配置即可)。