被mysql中的wait_timeout坑了
2024-08-25 22:41:08
今天被mysql里的wait_timeout坑了
网上能搜到很多关于mysql中的wait_timeout相关的文章,但是大多数只是说明了他的作用,而且都说这个参数要配合那个interactive_timeout参数一起修改才会生效,经过今天我和同事的努力,这里要说一下,其实是我把同事坑了,很惭愧,之前只是看服务器上连接mysql的连接很多都是timewait状态,逐在网上搜索到这个wait_timeout参数,使用该参数后,果然很有效,大大抑制了很多无效的timewait,但是谁知道这个参数会影响后端程序的连接,至于原因,后面会说。
为什么会说网上大多数都是坑呢?因为这个wait_timeout并不是改了配置文件不起作用,也不是非要和那个interactive_timeout一起改,才会生效,只是你在配置文件中配置“wait_timeout = 10”,在mysql里,用show variables like "%timeout%"看到的还是28800
但是,这里实际上已经按你配置的时间在运行了,也就是说配置已经生效了,为什么这里show不出变化,我也不清楚为什么。
就是因为这个,我们花费了大半天的时间来查找程序上的bug
这个wait_timeout的作用是,设置非交互连接(就是指那些连接池方式、非客户端方式连接的)的超时时间,默认是28800,就是8小时,超过这个时间,mysql服务器会主动切断那些已经连接的,但是状态是sleep的连接。
而我们后端程序是运行在windows下的,所以安装的myodbc,并使用ado方式连接的,也就是连接池方式,这种方式的坏处是,当服务器端去连接mysql的时候,连接池里的连接已经被mysql主动断开,这时取回的连接就是null,再加上程序里对此没有做判断的话,接下来的对数据库的一系列的操作都会出现问题。
反正就是很坑,唉,说多了都是泪。
最新文章
- 第 31 章 项目实战-PC 端固定布局[5]
- ODI 12c 安装
- LeetCode: pow
- 随记,C#修饰符访问级别
- java中静态代码块的用法 static用法详解
- 关于EJB 时间注解与oracle数据库时间格式
- Javascript实现DIV的隐藏和出现
- Asp.net MVC + EF + Spring.Net 项目实践(三)
- shell中特殊位置参数变量
- git配置代理
- HDU-1698-Just a Hook-线段树区间修改
- POJ 3635 - Full Tank? - [最短路变形][手写二叉堆优化Dijkstra][配对堆优化Dijkstra]
- 《js高级程序设计》--第三章数据类型
- qt书籍推荐
- Git 解决添加到.gitignore的忽略项不生效的问题
- CSS实现水平垂直居中方式
- jQuery获取标签中的元素
- python类型之间的转换
- [cocos2dx enhancement] CCPlatformMacros.h
- Tinker 热修复框架 简单上手教程
热门文章
- POJ 3352 Road Construction(边双连通分量,桥,tarjan)
- AJAX在GBK编码页面中传中文参数乱码的问题
- Linux中 干掉原来的PHP方法
- 关于python中使用mongodb模块,save和insert的小问题
- Android 开发框架介绍
- JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结 【转】http://blog.csdn.net/uniqer/article/details/7789104
- Oracle 课程三之表设计
- xml-xml试题
- Jedis的Sharded源代码分析
- lightoj 1023