备份:关于数据库连接的一些说明

正常情况下,对于数据库的open然后close,是没有任何问题的

但是当大家觉得这种open或者close多了的时候会影响数据库的性能,嗯,经过测试确实很影响性能。可能相差很多倍;

于是产生了连接池和某些其他持久化连接方案。

但是有些东西非常重要,就是连接次也好,其他持久化也好,对于数据库来说都不是即时关闭,有的时候会导致在数据库层面打开的socket一直存在,存在达到8个小时;

很多数据库连接池的设计可能对于数据库的通信并不熟悉,或者很多人在使用方案的不完备导致数据库的连接关闭没有

最后达到了max_connection.然后新的数据库请求进不来,从而整个系统瘫痪。这种瘫痪其实并不是大流量导致的,而是数据库连接释放的问题;

所以有的时候对于很多系统来说使用的技术越落后反而越稳健。

wait_timeout
interactive_timeout

上面这两个参数都是8个小时。


如果你使用php的mysqli的持久化方案,某些情况下php异常后,在max_connection以上的用户就进不来了。必须等8个小时自然释放。

由于mysqli在持久化的时候对于持久化的标识有ip做为依据,所以你在同一个ip的测试下始终都是一个mysql的连接,但是ip一多,你就懂了。


这种问题的根源其实有2:

1,对于连接层的方案不熟悉使用了方案;

2,对于数据库的连接机制不熟悉写了连接层。


那种只open,不close的情况都不说了。




补充一下:

连接池里面的连接数一定要小于数据库允许的max_connection,留出一下活路;或者某些关键地方的数据库操作不使用连接池?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值