加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Last packet sent to the server was 0 ms ago 解决办法

(2012-06-12 17:08:29)
标签:

连接

死锁

last

packet

proxool

杂谈

分类: mysql

这种情况出现的环境很多,众说纷纭。

 

有文章说在mysql的配置文件里添加waittimeout参数

“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分钟。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有