SQL数据库连接超时时间已到的问题

作者:笨蛋girl 时间:2024-01-20 15:05:53 

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

问题

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

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

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

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

5:连接超时时间已到。在登录后阶段超过了此超时时间。连接可能在等待服务器完成登录过程并响应时超时;或者在尝试创建多个活动连接时超时。 尝试连接到此服务器时花费的持续时间是 - [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给配置


来源:https://blog.csdn.net/u011791378/article/details/83413841

标签:SQL,数据库,连接超时,时间
0
投稿

猜你喜欢

  • python 制作本地应用搜索工具

    2023-03-25 02:16:50
  • Asp下Access无法更新的解决方法

    2012-12-04 20:19:35
  • python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)

    2022-12-31 16:20:14
  • VC基于ADO技术访问数据库的方法

    2024-01-28 22:25:08
  • Asp.net 连接MySQL的实现代码[]

    2024-01-16 04:27:15
  • Django框架首页和登录页分离操作示例

    2022-10-06 02:16:42
  • Python双端队列deque的实现

    2022-07-07 02:37:29
  • Python根据当前日期取去年同星期日期

    2021-09-14 15:01:48
  • Java+mysql本地图片上传数据库及下载示例

    2023-07-23 19:49:13
  • mysql 计算函数详情

    2024-01-14 05:19:09
  • Search File Contents PHP 搜索目录文本内容的代码

    2023-11-24 08:09:40
  • 使用Python画出小人发射爱心的代码

    2022-08-07 01:52:16
  • python中xlrd模块的使用详解

    2021-02-13 12:05:27
  • PyTorch梯度裁剪避免训练loss nan的操作

    2022-02-16 10:56:23
  • React路由鉴权的实现方法

    2024-05-02 17:06:12
  • 一篇文章弄懂PHP和HTML的嵌套写法

    2023-06-20 04:51:22
  • 兼容主流浏览器,纯CSS下拉菜单

    2010-09-05 20:30:00
  • c#操作sqlserver数据库的简单示例

    2024-01-28 11:25:23
  • 使用Python的Scrapy框架编写web爬虫的简单示例

    2023-08-03 12:37:50
  • 互联网科技大佬推荐的12本必读书籍

    2022-08-23 12:56:38
  • asp之家 网络编程 m.aspxhome.com