达梦数据(DM8) 返回

SqlSugar 沟通中
16 195

问题 : 进行数据库数据操作  导致出现大量的 TCP  TIME_WAIT ,需要等待半分钟 才会消失,占用过多 就会连不上数据库

截取部分

image.png


测试demo

demo.rar


使用MySql 不会出现这种情况,mysql 执行如下

image.png

热忱回答16

  • 有没有报错,如果没报错就是OK的

    0 回复
  • 目前代码是对的 ,应该没有问题 ,.net链接池非常严格只要不报错就是OK

    0 回复
  • IsAutoCloseConnection = true

    设置为true

    0 回复
  • 还有疑问提供可以报错的DEMO ,目前你的DEMO是OK的

    0 回复
  • @fate sta:把demo 和数据库放在一个服务器上   测试插入数据改大点 当链接站满了后 报连不上数据库

    0 回复
  • @棉花糖:你就一个简单循环不会报错的

    0 回复
  • 如果是系统问题可以禁用一下连接池 :Pooling =true  字符串加上

    max pool size调大些

    0 回复
  • image.png

    我这边正常

    0 回复
  • @fate staPooling =true 这个我尝试了的,报连接串错误。 我现在的程序是 接口加定时任务,定时任务有多线程,

    4GU(29}SZ6FWT%5W1T349I5.png

    出现大量的未被释放的 TCP TIME_WAIT ,demo 出现的量比较少,win10 或win11 30S 会回收,服务器是 180s

    0 回复
  • @棉花糖:那是线程问题加上copynew 。

    0 回复
  • 定时任务有多线程 一看就是线程问题 ,这个加copynew就行了

    0 回复
  • 还有疑问看文档:偶发

    0 回复
  • @fate sta:线程中我是进行了 copyNew() 其实问题是出在   TIME_WAIT状态的数量过多,可能会耗尽系统的可用端口,导致新的连接无法建立。

    0 回复
  • @棉花糖:有问题提供完整能重现的DEMO 

    0 回复
  • 你可以精简成一个DEMO进行测试,如果DEMO不能重现可能是你代码问题

    0 回复
  • @fate sta:问题找了 是数据库问题,达梦数据库部署在windows上有这个问题,数据库在linux上无问题, 


    0 回复