mysql 连接超时的问题

项目中用mycat做的分表分库,异步通知系统会连接mycat去查数据库数据,有时会抛异常提示mysql server has gone away。最初以为是mycat的问题,在修改了mycat的配置,缩短心跳时间,增加空闲超时时间后,发现问题仍然存在。说明问题在mysql上,经过咨询后发现是mysql的最大连接数用的是默认值:151,这个太小,现已修改为1000。并修改max_allowed_packet  = 20M

本次排查涉及到的一些参数:

mysql> show variables like ‘%connect%’; 

    max_connections                                                 MySQL服务实例能够同时接受的的最大并发连接数

mysql> show status like ‘%connections%’;

    Connection_errors_max_connections                 当MySQL的最大并发数大于系统变量(show variables)中max_connections的最大并发数,因此而被拒绝的次数

    Max_used_connections                                       MySQL从启动至今,同一时刻并发的连接数最大值。如果这个值大于 max_connections则表明系统经常处于高并发的状态,应该考虑调大最大并发连接数。

mysql> show variables like ‘thread%’;

    thread_cache_size                                              MySQL线程的缓存池(thread cache pool),将空闲的连接线程放入连接池中缓存起来,而非立即销毁。当有新的连接请求时,如果连接池中有空闲的连接,则直接使用。否则要重新创建线程。

mysql> show status like '%Abort%';

    Aborted_clients                                                   当ablort clients增大的时候意味着有客户端成功建立连接,但是很快就断开连接或者被终止了,这种情况一般发生在网络不稳定的环境中。主要的可能性有

                                                                                a)客户端没有主动关闭mysql连接mysql_close()。

                                                                                     b)wait_timeout设置很短被mysql干掉了。

                                                                                     c)客户端由于某些原因被干掉了。

 

posted @ 2017-12-29 14:54  MysticGrrrr  阅读(1865)  评论(0编辑  收藏  举报