Last packet sent to the server was 0 ms ago

“MySQL默认的空闲等待时间是8个小时,一旦空闲超过8个小时,就会抛出异常”,mysql是默认每个连接不关闭而等待时长为8小时,但无论什么数据库操作,也不应该持续8小时,而并非那些人所说的mysql空闲了8小时,这完全是两个概念!

个人感觉这种方式完全与解决问题背道而驰,无用的连接非但没有释放,反而一直保持,如果所有访问都使用这一个连接来操作,当然没什么问题,但基本没有人会使用一个连接来处理网站的并发请求吧,试想一下网站有几百上千的并发,那么这些连接将永远会保持,像有些人设置的时间一样,10年。。。。软件运行周期也没这么长吧。

 

 

其实归根结底有两点原因会导致出现这样的情况,

1、连接没有关闭释放,从而导致连接死锁。

2、一般发生在并发比较多时,LAG严重,导致很多连接还未结束但到达默认限制时间便被连接池给kill了。

 

 

如何避免发生这种情况,

针对第一种:很显然是检查代码,看每次用完连接后有没有及时关闭,一般这里修正了就不会再有问题了。

针对第二种:改连接池默认参数。

以Proxool为例:

<house-keeping-sleep-time>3000000</house-keeping-sleep-time>//连接空闲限制时间-默认30秒改为5分钟。


具体情况分析如下:
    连接被多线程共用:后一个连接将前一个连接的引用覆盖,将导致两个连接的引用都是一样的,如果这两个连接都依次发送http请求并获取了响应数据之后再关闭,那么它们返回的数据肯定是相同的;如果有一个连接在关闭时,而另一个连接正在和服务器交互,这将导致另一个连接出现socket closed异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小狼躲藏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值