【问题标题】:Frequently getting Read timed out in SQL Server 2008 Hibernate 4.1在 SQL Server 2008 Hibernate 4.1 中经常读取超时
【发布时间】:2014-08-16 01:49:00
【问题描述】:

我们在使用 sql server 2008r2 和休眠时遇到了一个奇怪的问题。经常从数据库中获取读取超时错误,这里是错误详细信息:

    10:02:11,368 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-/55.2.0.180:443-36) SQL Error: 0, SQLState: 08S01
    10:02:11,368 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-/55.2.0.180:443-36) Read timed out
    10:02:11,368 ERROR [stderr] (http-/55.2.0.180:443-36) org.hibernate.exception.JDBCConnectionException: Read timed out10:02:11,368 ERROR [stderr] (http-/55.2.0.180:443-36)  at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:131)10:02:11,368 ERROR [stderr] (http-/55.2.0.180:443-36)    
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)10:02:11,368 ERROR [stderr] (http-/55.2.0.180:443-36)   
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)10:02:11,368 ERROR [stderr] (http-/55.2.0.180:443-36)   
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)10:02:11,384 ERROR [stderr] (http-/55.2.0.180:443-36)   
at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)10:02:11,384 ERROR [stderr] (http-/55.2.0.180:443-36) 




... 131 more10:02:11,727 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-/55.2.0.180:443-36) SQL Error: 0, SQLState: null
    10:02:11,727 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-/55.2.0.180:443-36) The connection is closed.
    10:02:11,727 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/CastrolCubedUnit].[spring]] (http-/55.2.0.180:443-36) JBWEB000236: Servlet.service() for servlet spring threw exception: com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed.

如果相关的话,很少有更多信息:

  1. 我们将 C3P0 连接池与休眠一起使用。并配置 连接测试也是如此。我们已经检查了数据库(在时间 发生异常) exec sp_lock 命令 DB 仅持有 S 或 IS锁

  2. 我们没有在本地环境中在本地运行它 很好

  3. 应用程序托管在 Amazon aws 中,具有两个应用程序服务器和 一个问题仍然存在的负载均衡器。

非常感谢我们坚持这一帮助。

【问题讨论】:

  • 对于每个查询,您都得到这个?
  • 你能telnet到数据库服务器吗?
  • 不是针对每个查询,但一旦开始出现此错误,我们就会非常频繁地收到此错误。是的,telnet 工作正常。
  • c3p0 设置文件中的 time_Out 设置是什么?是否有任何查询花费的时间超过 time_out 设置
  • 别这么认为..这是我们的休眠设置和c3p0设置

标签: java sql sql-server hibernate amazon-web-services


【解决方案1】:

MS SQl 服务器保存所有查询的统计信息。表sys.dm_exec_query_stats 有关于每个查询的统计信息,但在此之前我建议您运行 DBCC 命令重新开始记录查询运行时间并完成一些缓存清除工作。

DNDC 命令DBCC FREEPROCCACHE

以下是查找长查询的查询

SELECT DISTINCT TOP 10
t.TEXT QueryName,
s.execution_count AS ExecutionCount,
s.max_elapsed_time AS MaxElapsedTime,
ISNULL(s.total_elapsed_time / s.execution_count, 0) AS AvgElapsedTime,
s.creation_time AS LogCreatedOn,
ISNULL(s.execution_count / DATEDIFF(s, s.creation_time, GETDATE()), 0) AS FrequencyPerSec
FROM sys.dm_exec_query_stats s
CROSS APPLY sys.dm_exec_sql_text( s.sql_handle ) t
ORDER BY
s.max_elapsed_time DESC
GO 

您可以通过This Link进行优化查询。

【讨论】:

    猜你喜欢
    • 2014-01-11
    • 2018-11-21
    • 2021-12-08
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    相关资源
    最近更新 更多