【问题标题】:Possible reasons for "connection abort: recv failed" error on SQL ServerSQL Server 上出现“连接中止:recv 失败”错误的可能原因
【发布时间】:2019-08-06 07:14:51
【问题描述】:

我们有一个应用程序使用简单的 JDBC 连接到数据库。现在一些 使用 SQL Server 的客户抱怨应用程序时常崩溃。检查日志文件显示错误

com.microsoft.sqlserver.jdbc.SQLServerException:软件导致连接中止:recv 失败

在试图找出这个错误的原因时,我发现了一些我觉得很奇怪的事实:

  • 该软件可能运行数小时甚至数天而不会出现任何问题。然后,突然,错误发生了,而在做之前已经做过一千次的事情。 (例如:有一个后台进程,即定期轮询数据库,假设每 20 秒一次,如果有事可做。在没有人使用系统的半夜,通常情况并非如此,所以夜间正常的后台操作只是这个轮询。但是,尽管如此,它可能会发生在几个小时内什么都不做时,它会因为这个错误而崩溃。)

  • 使用 oracle 数据库的系统不会出现此问题。软件是一样的,但是没有报错。

  • 没有明显的数据库维护等等。数据库管理员方面没有任何可能与该问题相关的信息。

  • 我在事件日志中没有找到任何可能与问题相关的提示。

  • 为了找出短网络问题是否可能是我运行 ping 实用程序(hrping,它还允许写入时间戳)的原因。但是:只要 ping 正常运行,问题就会消失。如果我停止 ping,那么我会恢复崩溃。

  • 似乎与远程或非远程数据库无关。在一个受影响的系统上,数据库位于另一台服务器上,而在另一个受影响的系统上,它甚至位于同一台服务器上。

  • 崩溃非常不规律。如果它们经常发生,那么它们一天会发生几次。但它也可以运行一个月而没有问题。为了让您了解时间模式,我在这里列出了每天的崩溃次数:

Date                           Crash count
------------------------------ -----------
2019-08-06                     1
2019-08-05                     5
2019-08-03                     1
2019-07-31                     1
2019-07-27                     5
2019-07-26                     1
2019-07-24                     1
2019-07-20                     3
2019-07-19                     2
2019-07-18                     2
2019-07-16                     1
2019-07-15                     2
2019-07-14                     1
2019-07-12                     1
2019-07-11                     1
2019-07-10                     1
2019-07-09                     2
2019-07-05                     1
2019-07-01                     1
2019-06-27                     1
2019-06-25                     1
2019-06-24                     1
2019-06-20                     1
2019-06-18                     1
2019-06-17                     5
2019-06-16                     1
2019-06-11                     1
2019-06-10                     1
2019-06-07                     1
2019-06-04                     1
2019-06-03                     2
2019-06-02                     2
  • 我们只在极少数系统上遇到这种情况。其他客户将 SQL Server 数据库与相同的应用程序一起使用,并且运行它没有任何问题。

  • 我将 JDBC 驱动程序更新到兼容的最新版本 (6.4.0),但这并没有解决问题。

关于软件的一些背景信息:

我们使用的是 Java 7 (1.7.0_80 b15),SQL server 版本分别是 2012 (v11.0.5058.0) 或 2014 (v12.0.2000.8)。

为了找到解决方案,我进行了很多谷歌搜索,但这些错误大多与连接上的连接问题有关——在工作过程中不是间歇性的。

到现在为止,我真的没有什么想法了......也许你有一些建议我可以检查一下?

【问题讨论】:

    标签: sql-server connection


    【解决方案1】:

    但是:只要 ping 正常运行,问题就会消失。如果我停止 ping,那么我会恢复崩溃。

    您有远程办公室通过 VPN 连接到 SQL Server,是吗?听起来 VPN 有一个不活动超时,这会断开您的连接。

    【讨论】:

    • 我不这么认为——有两台机器,在同一个网络中运行。一台机器托管数据库,一台机器托管应用程序。我在应用程序服务器上运行 ping 来 ping 数据库服务器(如前所述,在同一网络中)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 2011-02-03
    • 2012-02-05
    • 1970-01-01
    • 2020-02-22
    • 2021-11-19
    • 2011-10-09
    相关资源
    最近更新 更多