一、问题重现二、排查问题三、解决问题四、关于Mysql这两个参数的作用以及解释五、总结
标题是不是惊讶到你了,但是确实是一个大坑,特此记录下来,方便他人查阅。
标题虽然夸张了,但是问题确实真真实实的。
一、问题重现
由于工作室的几个团队需要发布项目,参加比赛。
正好都挤在了最后2天,时间也比较紧张。
由于学弟学妹们对项目在服务器上的部署过程并不是太熟悉,又恰巧我对这方面还略知一二,还因为我有一台比学生机配置稍微高一点的阿里云服务器(几年前阿里云搞活动花了我好几千买的几年的,心痛啊)。
他们都需要提交作品的url,和演示PPT、演示视频等材料。
url是必须要写在PPT里的,所以他们就比较着急呀,我的服务器是Linux的,我玩的可能比较6,但是学弟学妹们可能就不太行了。
但是我当时也没办法帮他们部署到服务器,因为我当时还在上班。我就把Linux服务器的磁盘给初始化调,然后给他们安装了一个windows 2008 R2的服务器。
并且指出来了一个很好的部署方法:
配置的和开发环境一样就行了,直接启动idea。
这种虽然不是正规的部署方法,但是对于他们是很有效的。
三个项目:
![c117114157049b866063fe59383dc2d1.png](https://i-blog.csdnimg.cn/blog_migrate/78ca9d55fada1f56bb001d31ae89c443.png)
服务器也给他们临时升级了下内存和带宽还有存储:
![82fa8cd4759d907f03551bc4871f4467.png](https://i-blog.csdnimg.cn/blog_migrate/167f5515d4f80ace5d3bdf869860ff19.png)
但是项目每过一段时间就会出现问题,错误如下:
![091c1dc0628fac5096bcfa335b78ee1f.png](https://i-blog.csdnimg.cn/blog_migrate/b28275cd4638f3a80da83982ca1f1457.png)
报错的代码提示:
1### Cause: java.sql.SQLException: Could not retrieve transation read-only status server
2; SQL []; Could not retrieve transation read-only status server; nested exception is java.sql.SQLException: Could not retrieve transation read-only status server] with root cause
3
4java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
二、排查问题
网上说配置文件的问题,也有的说是连接mysql的时候有问题,各方面都有,综合所述排查起来非常的困难。
代码在本地跑起来是没问题的,在线上就有问题了。
那只能是服务器的问题了。
就这样断断续续的尝试了4天4夜,,这4天4夜是在有时间的情况下,哈哈,并不是从天亮到天黑的那种。
往上所说的解决办法都不起作用。
只好亲自手动去一点一点排查了。
1、检查了配置文件,没问题;
2、检查Mysql的配置文件。
发现Mysql的连接的超时时间和本地的Mysql的超时时间是不一致的。只有短短的120秒,所以这个地方是存在问题的,无疑了。
可以通过下方这个命令进行查看关于时间的配置信息:
1show variables like '%timeout%'
![c673d4a7ba360550de32596cae8c9920.png](https://i-blog.csdnimg.cn/blog_migrate/b516388b8cae0727f024727242221fae.png)
三、解决问题
修改配置文件呗;把相关的这两条修改一下。
可以通过set命令来暂时修改:
1set wait_timeout= 86400;
2set interactive_timeout= 86400;
![581e74fe777314d888fc6330c1ba22e8.png](https://i-blog.csdnimg.cn/blog_migrate/f523f445bf8ac5a3b1b57a42133b34e1.png)
查看是否修改成功:
![9d323dfb66a1f82fa8e6d920ac99f3a1.png](https://i-blog.csdnimg.cn/blog_migrate/659cd4c4cd06b962633a849259dc1e86.png)
但是如果重启的话,就会恢复过来默认的。
那么就需要修改配置文件了:
1[mysqld]
2...省略其他的
3interactive_timeout=86400
4wait_timeout=86400
5...省略其他的
修改之后需要重新启动Mysql服务。
就是永久的了。
至此问题解决了。
四、关于Mysql这两个参数的作用以及解释
可以打开Mysql的官方手册:
https://dev.mysql.com/doc/refman/5.7/en
然后找到Mysql的系统变量说明:
![149310efba724a9081fb7c1fe3185a05.png](https://i-blog.csdnimg.cn/blog_migrate/99384d4e91d8dc33c2b7f04c3f1ed00b.png)
然后搜索一下,你需要查看的变量:
![70e83d77adf3fe50c3fc3261d03d3c07.png](https://i-blog.csdnimg.cn/blog_migrate/3b7eb6ba47528eead840ab00b9036192.png)
wait_timeout
![8859b7d8821b754e749a19f4354fd4a0.png](https://i-blog.csdnimg.cn/blog_migrate/ddedaf37b0fbed0e3ec98952b33120d3.png)
官方解释:
The number of seconds the server waits for activity on a noninteractive connection before closing it.
On thread startup, the session wait_timeout value is initialized from the global wait_timeout value or from the global interactive_timeout value, depending on the type of client (as defined by the CLIENT_INTERACTIVE connect option to mysql_real_connect()). See also interactive_timeout.服务器关闭交互式连接前等待活动的秒数。
交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。又见wait_timeout
interactive_timeout
![746956f3cb93393d33c2e51a1667aecc.png](https://i-blog.csdnimg.cn/blog_migrate/17a3040adca87f2339c1c38e70b10d1a.png)
官方解释:
The number of seconds the server waits for activity on an interactive connection before closing it.
An interactive client is defined as a client that uses the CLIENT_INTERACTIVE option to mysql_real_connect(). See also wait_timeout.服务器关闭非交互连接之前等待活动的秒数。
在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义),又见interactive_timeout
五、总结
其实这就很奇怪的,Mysql的默认值是28800,为什么我查询到的默认值是120呢?????
通过查看学弟安装的Mysql我才知道,他是为了省事,直接安装的下面这个软件;所以还是有风险的,还是用官方的安装比较稳!!!!
![171e0a777a8d16d8e1dbda58fc146960.png](https://i-blog.csdnimg.cn/blog_migrate/8b97bb099daa1121ebcf855dd4b3e4af.png)
关注我微信公众号第一时间推送给你哦:
回复菜单
,更有好礼,惊喜在等着你。
![e523d0647858bffc208f7db8b45d4daa.png](https://i-blog.csdnimg.cn/blog_migrate/d4993f1755e0fca04a76899f5279abe4.png)
快来我粉丝群:每天欢快的玩耍
![106670dadaaa9723eff713fea286a092.png](https://i-blog.csdnimg.cn/blog_migrate/92d4628bcc7d797cb2f3c70819b3b1b0.png)