超时时间已到,但是尚未从池中获取连接,原创
金蝶云社区-胡哥哥
胡哥哥
17人赞赏了该文章 4,384次浏览 未经作者许可,禁止转载编辑于2021年11月08日 09:41:13

【背景】正式账套使用过程时不时出现“超时时间己到,超时己到,但是尚未从池中获得连接,测试账套是正常的,调整了相关参数,是两台Server,MC/APP+DB,APP配置(24C48U+96G内存),DB配置(20C40U+64G内存),DB版本是SQL server 2016标准版,正式/测试账套(数据中心)大小都是22G,

QQ图片20211105154715.png


【排查思路】

  1. 先检查下数据库相关参数最大并行度、最大内存、快照隔离,参考金蝶云星空使用SQL SERVER常规优化,此处不赘述;

  2. IIS回收设置,详见客户端闪退,此处不赘述;

  3. 查看云星空日志,不断有提示超时时间己到,超时己到,但是尚未从池中获得连接,

  4. 查看数据库日志,对数据库进行数据库优化-重建索引+更新统计信息,还是出现提示,

  5. 查看APP和DB会话连接,打开 cmd  输入命令netstat -ano|find "ESTABLISHED" /C ,看到会话量较大,


    QQ图片20211105154621.png

QQ图片20211105154628.png

6.进一步查看数据库session资源使用情况,执行下列SQL,可以看出资源用满了,看到SQL语句是二开的,跟二开同事做了沟通之后,问题解决。

select host_process_id,db_name(database_id) dbname,count(*) SessionSum from sys.dm_exec_sessions group by host_process_id,db_name(database_id),


select b.name ,(SELECT TEXT FROM  SYS.DM_EXEC_SQL_TEXT(a.SQL_HANDLE) ) FSQLTEXT ,a.*  from sys.sysprocesses a  inner join sys.databases  b on a.dbid = b.database_id where --b.name ='master' and  (SELECT TEXT FROM  SYS.DM_EXEC_SQL_TEXT(a.SQL_HANDLE) )='xp_cmdshell' -- hostname ='DTDW7BT2P03V109' a.program_name ='.Net SqlClient Data Provider'


QQ截图20211108093315.jpg




图标赞 17
17人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0