c# 偶发访问postresql缓慢的问题

18 篇文章 1 订阅

客户偶尔推送一些数据到我们写的api中,数据并发很小,但是经常会反应很慢,一个简单的查询,需要20多秒,通过抓包工具排查,连接前,很主动推送一些select 1,这样的语句,一直重复推送,但是c#一直获取不到数据,要过20秒左右,才会发送新的请求包.

后来查询npgsql的官方网站

Connection Idle Lifetime The time (in seconds) to wait before closing idle connections in the pool if the count of all connections exceeds Minimum Pool Size. Introduced in 3.1.

我看我的npgsql的版本,还是2.x版本,升级到3.1+之后正常

原因分析:
因为npgsql默认开启连接池技术,一直保持与数据库的连接,数据库一直出入wait的状态,过了一定时间,如20分钟,还没有新的连接,就会进入sleep或者断开状态,但是iis进程并不知道,再次请求后,iis的连接池,其实已经连不上数据库了.所以不断发送selelct 1这样的语句,测试是否可连,但是一直得不到相应,过了10几秒后,系统才会重连,这样就导致了系统缓慢,npgsql3.1之后,系统设置了默认的Connection Idle Lifetime,如果300秒iis没有新请求,会主动关闭连接池.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值