mysql 长连接 has gone away_MySQL server has gone away报错原因分析/
在平时和开发的交流 以及 在论坛回答问题的或称中会发现这个问题被问及的频率非常高。
程序中报错: MySQL server has gone away 是什么意思? 如何避免?
因此,感觉有必要总结一下发生这个问题的原因。今天正好看到一篇外文blog总结的比较好,就翻译过来了
原因1. MySQL 服务宕了
判断是否属于这个原因的方法很简单,执行以下命令,查看mysql的运行时长
$ mysql -uroot -p -e "show global status like 'uptime';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime | 68928 |
+---------------+-------+
1 row in set (0.04 sec)
或者查看MySQL的报错日志,看看有没有重启的信息
$ tail /var/log/mysql/error.log
130101 22:22:30 InnoDB: Initializing buffer pool, size = 256.0M
130101 22:22:30 InnoDB: Completed initialization of buffer pool
130101 22:22:30 InnoDB: highest supported file format is Barracuda.
130101 22:22:30 InnoDB: 1.1.8 started; log sequence number 63444325509
130101 22:22:30 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
130101 22:22:30 [Note] - '127.0.0.1' resolves to '127.0.0.1';
130101 22:22:30 [Note] Server socket created on IP: '127.0.0.1'.
130101 22:22:30 [Note] Event Scheduler: Loaded 0 events
130101 22:22:30 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.5.28-cll' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL)
如果uptime数值很大,表明mysql服务运行了很久了。说明最近服务没有重启过。
如果日志没有相关信息,也表名mysql服务最近没有重启过,可以继续检查下面几项内容。
2. 连接超时
如果程序使用的是长连接,则这种情况的可能性会比较大。
即,某个长连接很久没有新的请求发起,达到了server端的timeout,被server强行关闭。
此后再通过这个connection发起查询的时候,就会报错server has gone away
$ mysql -uroot -p -e "show global variables like '%timeout';"
+----------------------------+----------+
| Variable_name | Value |
+----------------------------+----------+
| connect_timeout | 30 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| wait_timeout | 28800 |
+----------------------------+----------+
mysql> SET SESSION wait_timeout=5;
## Wait 10 seconds
mysql> SELECT NOW();
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 132361
Current database: *** NONE ***
+---------------------+
| NOW() |
+---------------------+
| 2013-01-02 11:31:15 |
+---------------------+
1 row in set (0.00 sec)
3. 进程在server端被主动kill
这种情况和情况2相似,只是发起者是DBA或者其他job。发现有长时间的慢查询执行kill xxx导致。
$ mysql -uroot -p -e "show global status like 'com_kill'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_kill | 0 |
+---------------+-------+
4. Your SQL statement was too large.
当查询的结果集超过 max_allowed_packet 也会出现这样的报错。定位方法是打出相关报错的语句。
用select * into outfile 的方式导出到文件,查看文件大小是否超过 max_allowed_packet ,如果超过则需要调整参数,或者优化语句。
mysql> show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)
修改参数:
mysql> set global max_allowed_packet=1024*1024*16;
mysql> show global variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name | Value |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
1 row in set (0.00 sec)
mysql 长连接 has gone away_MySQL server has gone away报错原因分析/相关推荐
- mysql away_MySQL server has gone away报错原因分析
在执行一个sql文件时mysql -h 127.0.0.1 -uroot study -e"source b.sql",报错MySQL server has gone away.上 ...
- MySQL server has gone away报错原因分析及解决办法
原因1. MySQL 服务宕了 判断是否属于这个原因的方法很简单,执行以下命令,查看mysql的运行时长 $ mysql -uroot -p -e "show global status l ...
- MySQL server has gone away报错原因分析
原因1. MySQL 服务宕了 判断是否属于这个原因的方法很简单,执行以下命令,查看mysql的运行时长 $ mysql -uroot -p -e "show global status l ...
- MySQL Server has gone away报错原因汇总
原因一: MySQL 服务宕了 判断是否属于这个原因的方法很简单,执行以下命令,查看mysql的运行时长: $ mysql -uroot -p -e "show global status ...
- php mysql长连接聊天室_PHP之探索MySQL 长连接、连接池
PHP连接MysqL的方式,用的多的是MysqL扩展.MysqLi扩展.pdo_MysqL扩展,是官方提供的.PHP的运行机制是页面执行完会释放所有该PHP进程中的所有资源的,如果有多个并发访问本地的 ...
- mysql ping 长连接超时时间_mysql_ping与mysql长连接(部分摘录) | 学步园
mysql_ping与mysql长连接 今天有大收获.最近开发的一个系统,后台用的线程池来处理请求,而每个线程池持有一个mysql连接.这个程序有时候会莫名其妙的死掉,好像是在操作数据库的时候.由于出 ...
- 记录一次吃力的探索过程【Thinkphp搭建Mysql长连接并重用】
使用Thinkphp搭建服务器后,进行ab测试发现并发性能几乎为0.-c参数设置为1和2,8,每秒完成请求都只有0.9左右. 于是打开mysql全局日志一看,我的乖乖,一个http请求就connect ...
- 苹果cms安装mysql检测失败_maccms(苹果cms)采集过程报错--MySQL server has gone away错误的解决办法...
maccms(苹果cms)采集过程报错--MySQL server has gone away,造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用insert ... value ...
- java连接 mdx,olap4j连接sap hana的xmla服务mdx查询报错【已解决】
olap4j连接sap hana的xmla服务mdx查询报错[已解决] 各位大神,求指教~~我在java中通过olap4j连接上了sap hana的xmla xs 服务,通过mdx查询hana中的数据 ...
最新文章
- 【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 )
- Tesla对德国政府的审批流程表示受够了
- 测试监控系列:使用vb批量统计nmon结果
- Effective C++条款7:为多态基类声明virtual析构函数
- 深度学习:神经风格转移
- ViBe算法原理及Matlab实现
- 阿里云服务器ping不通github或其他域名
- EXCEL 小tips
- 海康ISAPI透传ftp
- IIS ftp服务器的搭建
- Codeforces 821B Okabe and Banana Trees 题解
- SQLExceptioncom.mysql.jdbc.SQLError in createSQLException Incorrect string value: '\xF0\x9F\x99\x8F'
- 在Jetson Nano上安装RTL8821cu驱动
- 阿里大数据之路:数据管理篇大总结
- 一元二次方程ax2+bx+c=0的解
- 高中数学公式总结:解析几何(非常全)
- 错误解决:Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255]
- NYOJ-72-Financial Management-2013年10月12日14:58:32
- 在C#中使用Ribbon界面(一)——创建一个Ribbon窗口
- android找不到 windows 7 共享无线网络连接,Windows 7下wifi共享上网设置教程 没有无线路由器也能用wifi...