文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SQL数据库连接超时时间已到的问题怎么解决

2023-07-06 01:42

关注

这篇文章主要介绍“SQL数据库连接超时时间已到的问题怎么解决”,在日常操作中,相信很多人在SQL数据库连接超时时间已到的问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL数据库连接超时时间已到的问题怎么解决”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

SQL数据库连接超时时间已到

问题

System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

在向服务器发送请求时发生传输级错误。 (provider: TCP Provider, error: 0 - 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。)

已成功与服务器建立连接,但是在登录前的握手期间发生错误。 (provider: SSL Provider, error: 0 - 等待的操作过时。) ---> System.ComponentModel.Win32Exception (0x80004005): 等待的操作过时。

在从服务器接收结果时发生传输级错误。 (provider: TCP Provider, error: 0 - 指定的网络名不再可用。) ---> System.ComponentModel.Win32Exception (0x80004005): 指定的网络名不再可用。

连接超时时间已到。在登录后阶段超过了此超时时间。连接可能在等待服务器完成登录过程并响应时超时;或者在尝试创建多个活动连接时超时。 尝试连接到此服务器时花费的持续时间是 - [Pre-Login] initialization=2;handshake=5;[Login] initialization=0;authentication=0;[Post-Login] complete=14025; ---> System.ComponentModel.Win32Exception (0x80004005): 等待的操作过时。

解决方法

设置最大超时时间

server=192.168.0.1;User ID=sa;Password=123;database=;Min Pool Size=0;Max Pool Size=30000;Pooling=true;

一般这种出现于高并发请求的情况,以下代码可以查看SQL的连接数,这个可以作为监测的一种手段。

SELECT [program_name] ,[spid],* FROM [sys].[sysprocesses] WHERE [spid]>50  and [program_name]='.Net SqlClient Data Provider' and dbid= db_id('')

数据库访问超时时间配置总结

1.背景

访问数据库超时间太长,访问数据量大或者扫描的数据量太大,导致数据库长时间无响应。链接被占用无法释放,会导致线程池被占满。

因此,为了能够及时释放占用链接,其他业务对数据库访问不受影响,所以要合理设置数据库访问超时时间。

2.配置说明

2.1connectionTimeout配置大小

Jdbc的connectTimeout配置是指等待与数据库建立socket链接的超时时间。如果未设置,默认为0,代表永不超时。

代码中checkoutTimeout的配置设置为1000s,表示连接池中连接获取链接超时时间,设置过大会导致接口响应变慢。

参考收单侧的经验值,connectTimeout设置为1000ms。

2.2socketTimeout配置大小

socketTimeout的配置是指客户端与数据库建立socket后,读写socket时的等待的超时时间。如果未设置,默认为0,代表永不超时。zebra默认的socketTimeout设置为60s。

根据对服务数据库访问统计发现最长为1-2s,socketTimeout可设置为3s

SQL数据库连接超时时间已到的问题怎么解决

SQL数据库连接超时时间已到的问题怎么解决

3.方案

3.1数据库SDK配置修改

连接池连接超时等设定需要设置到extraJdbcUrlParams参数中如下:

<property name="extraJdbcUrlParams" value="connectTimeout=1000&amp;socketTimeout=3000&amp;useSSL=false"/>

jdbcdriver 5.1.36及以上版本需要在jdbcurl设置 "useSSL=false" 参数, 可以通过此方式设置

3.2 默认SDK配置修改

修改jdbcRef配置

SQL数据库连接超时时间已到的问题怎么解决

3.3最终方案


优点

不足

结果

Db-client-SDK

服务代码中,可自由配置

比配置jdbcRef优先级高,dba也推荐

需要发布服务


RDS-Zebra

不需要发布服务

rd没有权限,需要dba给配置


到此,关于“SQL数据库连接超时时间已到的问题怎么解决”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯