项目每隔一段时间,某个链接卡死问题(查看数据库连接状况)

如果整个系统只有某几个连接一直卡住,可能这几个连接被连接池抛了,

修改方法:1,到spring配置文件修改removeAbandonedTimeout的关闭时长,这种情况是代码没运行完又无法优化的处理,可以增加时间知道运行完毕。

但上述方法对我的项目并没有起作用。

sqlserver数据库,通过以下查看数据库连接情况:

SELECT ds.session_id,       ds.status,       Db_name(dr.database_id) AS database_name,       ds.login_name,       ds.login_time,       ds.host_name,       dc.client_net_address,
       dc.client_tcp_port,       ds.program_name,       dr.cpu_time,       dr.reads,       dr.writes,       dc.num_reads,       dc.num_writes,       ds.client_interface_name,       ds.last_request_start_time,
       ds.last_request_end_time,       dc.connect_time,       dc.net_transport,       dc.net_packet_size,       dr.start_time,       dr.status,       dr.command,       dr.blocking_session_id,       dr.wait_type,
       dr.wait_time,       dr.last_wait_type,       dr.wait_resource,       dr.open_transaction_count,       dr.percent_complete,       dr.granted_query_memory
FROM   Sys.dm_exec_requests dr WITH(nolock)
       RIGHT OUTER JOIN Sys.dm_exec_sessions ds WITH(nolock)
                     ON dr.session_id = ds.session_id
       RIGHT OUTER JOIN Sys.dm_exec_connections dc WITH(nolock)
                     ON ds.session_id = dc.session_id
WHERE  ds.session_id > 50 
ORDER  BY ds.program_name

通过这条,排查到该数据库连接超过15个,每次点那个连接就会多一个,说明bug原因是代码运行每次连接没有关闭数据库连接导致。

根据该链接地址,排查代码,发现是每次openSession()没有安全关闭导致,重写代码,修改后解决问题。

猜你喜欢

转载自blog.csdn.net/Xu_programmer/article/details/116795147