【背景】正式账套使用过程时不时出现“超时时间己到,超时己到,但是尚未从池中获得连接,测试账套是正常的,调整了相关参数,是两台Server,MC/APP+DB,APP配置(24C48U+96G内存),DB配置(20C40U+64G内存),DB版本是SQL server 2016标准版,正式/测试账套(数据中心)大小都是22G,
【排查思路】
先检查下数据库相关参数最大并行度、最大内存、快照隔离,参考金蝶云星空使用SQL SERVER常规优化,此处不赘述;
IIS回收设置,详见客户端闪退,此处不赘述;
查看云星空日志,不断有提示超时时间己到,超时己到,但是尚未从池中获得连接,
查看数据库日志,对数据库进行数据库优化-重建索引+更新统计信息,还是出现提示,
查看APP和DB会话连接,打开 cmd 输入命令netstat -ano|find "ESTABLISHED" /C ,看到会话量较大,
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'
推荐阅读
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *