- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对有点误导性的标题表示歉意。
我有一个 device-id
应用程序,它基本上保存发送到系统的任何新 deviceId
或根据请求返回任何 deviceId
的详细信息.
这个问题不是很常见,但它确实时不时地出现,而且 Google 没有帮助解决它!
数据存储位于 MariaDB-10.1.35 。服务的 QPS Activity 约为 2.5k,几个 google 链接建议增加 wait_timeout
,但考虑到 QPS,600 秒的 wait_timeout 是一个安全的选择。
产品配置有:
validationQuery: "/* Health Check */ SELECT 1"
wait_timeout: 600
标准函数(围绕 hystrix 包装器构建如下)
public Optional<DeviceId> get(final String token) throws DeviceIdException {
try {
return CommandFactory.<Optional<DeviceId>>create("DeviceId", "Get")
.executor(() -> DaoRegistry.getDeviceIdLookupDao().get(token))
.toObservable()
.toBlocking()
.single();
} catch (Exception e) {
log.error("Get error {}", e);
throw DeviceIdException.builder()
.code(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode())
.errorCode("DI000")
.message("Oops! Something went wrong!")
.build();
}
}
堆栈转储如下
Caused by: org.hibernate.TransactionException: JDBC begin transaction failed:
at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.begin(AbstractLogicalConnectionImplementor.java:73)
at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.begin(LogicalConnectionManagedImpl.java:263)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.begin(JdbcResourceLocalTransactionCoordinatorImpl.java:214)
at org.hibernate.engine.transaction.internal.TransactionImpl.begin(TransactionImpl.java:56)
at org.hibernate.internal.AbstractSharedSessionContract.beginTransaction(AbstractSharedSessionContract.java:409)
at io.dropwizard.sharding.utils.TransactionHandler.beginTransaction(TransactionHandler.java:96)
at io.dropwizard.sharding.utils.TransactionHandler.beforeStart(TransactionHandler.java:48)
at io.dropwizard.sharding.utils.Transactions.execute(Transactions.java:52)
at io.dropwizard.sharding.utils.Transactions.execute(Transactions.java:46)
at io.dropwizard.sharding.dao.LookupDao.get(LookupDao.java:192)
at io.dropwizard.sharding.dao.LookupDao.get(LookupDao.java:176)
at com.myOrganisation.MyCustomService.commands.DeviceIdCommands.lambda$get$1(DeviceIdCommands.java:73)
at io.appform.core.hystrix.GenericHystrixCommand$1.run(GenericHystrixCommand.java:43)
at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:302)
at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:298)
at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46)
... 26 common frames omitted
Caused by: java.sql.SQLNonTransientConnectionException: (conn=2997305) unexpected end of stream, read 0 bytes from 4 (socket was closed by server)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:234)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:165)
at org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:238)
at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:356)
at org.mariadb.jdbc.MariaDbStatement.executeUpdate(MariaDbStatement.java:545)
at org.mariadb.jdbc.MariaDbConnection.setAutoCommit(MariaDbConnection.java:751)
at sun.reflect.GeneratedMethodAccessor39.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:126)
at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
at org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:79)
at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
at org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:81)
at com.sun.proxy.$Proxy53.setAutoCommit(Unknown Source)
at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.begin(AbstractLogicalConnectionImplementor.java:67)
... 41 common frames omitted
Caused by: java.sql.SQLException: unexpected end of stream, read 0 bytes from 4 (socket was closed by server)
Query is: set autocommit=0
java thread: hystrix-DeviceId.Get-4
at org.mariadb.jdbc.internal.util.LogQueryTool.exceptionWithQuery(LogQueryTool.java:126)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:222)
at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:350)
... 53 common frames omitted
Caused by: java.io.EOFException: unexpected end of stream, read 0 bytes from 4 (socket was closed by server)
at org.mariadb.jdbc.internal.io.input.StandardPacketInputStream.getPacketArray(StandardPacketInputStream.java:238)
at org.mariadb.jdbc.internal.io.input.StandardPacketInputStream.getPacket(StandardPacketInputStream.java:207)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readPacket(AbstractQueryProtocol.java:1427)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:1407)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:219)
... 54 common frames omitted
有人可以帮助我们找到正确的方向,以了解可能会损坏/丢失的内容吗?
最佳答案
看起来像是 wait_timeout
问题。如果该值设置为以小时为单位;将其减少到合理的时间;说600秒。期望连接能够保持几个小时就过于乐观了。希望这会有所帮助。
关于java - mariadb get 上的 TransactionException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55595402/
以下使用Spring Boot,Hibernate,JpaRepository,CockroachDB和Kotlin的最小CRUD示例生成org.springframework.orm.jpa.Jpa
对有点误导性的标题表示歉意。 我有一个 device-id 应用程序,它基本上保存发送到系统的任何新 deviceId 或根据请求返回任何 deviceId 的详细信息. 这个问题不是很常见,但它确实
我是hibernate的初学者。当我试图将对象保存到表不存在的数据库中时。我遇到了一个异常(exception) org.hibernate.TransactionException:在 org.rk
我正在开发一个 Spring/Hibernate/Vaadin 应用程序,尽管进行了大量研究,但我仍然无法解决一个问题。我的应用程序分为四层:模型 存储库 服务 View 当我使用笔记本电脑时,
我将 spring 与 hibernate 和我的 sql 一起使用。我得到这个异常(exception) at org.hibernate.transaction.JDBCTransaction.b
(对 Spring 还是有点陌生) 我需要一个服务方法,它同时是 @Scheduled 和 @Transactional,这样我就可以在其中调用 DAO。 声明式事务已启用,事务管理器是一个基于
感谢您的回复:)我的Web应用程序配置如grails 2.4.4版本,hibernate 4.3.6最终版本以及spring-core-4.0.7.RELEASE。 我表现得像 Session ses
我正在编写我的第一个使用 Hibernate Framework 插入记录的示例。 首先,我尝试按照 URL 给出的说明进行操作 你可以在 GIT Hibernate Basic 查看我的代码 当调用
我们收到错误导致:org.hibernate.TransactionException:JDBC 开始事务失败: 请在下面找到 8820042 WARN o.h.e.jdbc.spi.SqlExce
据我了解,当您尝试在提交前一个事务之前开始一个事务时,会发生此异常。但是,我不明白为什么在我的案例中会出现此异常。 我有一个带有以下 servlet 的网络应用程序: @RestController
我是 Hibernate 的新手。 我尝试编写一个小程序来将数据插入 mysql 数据库服务器。 这是我的程序的源代码: private int insertRelateNew(int newId,
这是我的模型类。这里我们使用 setter 和 getters 方法来初始化变量: package org.koushik.javabrains.dto; import javax.persisten
我正在使用 jersey 和 mysql、hibernate 4 和 c3p0。我创建了一个初始化 servlet,用于配置 hibernate 并将当前 session 上下文类设置为线程。我创建了
运行 removeUserFromConference 方法时出现此异常: 04/06/2012 00:20:48 org.apache.catalina.core.StandardWrapperVa
我已经使用这些技术 + c3p0 构建了一个 Web 服务来进行数据库处理。大多数时候它工作正常,但由于此错误,我有 3-5%(有时甚至 10%)的访问失败。 我以这种方式使用 Hibernate:
我是一名优秀的程序员,十分优秀!