今天被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,再加上程序里对此没有做判断的话,接下来的对数据库的一系列的操作都会出现问题。
  反正就是很坑,唉,说多了都是泪。

最新文章

  1. 第 31 章 项目实战-PC 端固定布局[5]
  2. ODI 12c 安装
  3. LeetCode: pow
  4. 随记,C#修饰符访问级别
  5. java中静态代码块的用法 static用法详解
  6. 关于EJB 时间注解与oracle数据库时间格式
  7. Javascript实现DIV的隐藏和出现
  8. Asp.net MVC + EF + Spring.Net 项目实践(三)
  9. shell中特殊位置参数变量
  10. git配置代理
  11. HDU-1698-Just a Hook-线段树区间修改
  12. POJ 3635 - Full Tank? - [最短路变形][手写二叉堆优化Dijkstra][配对堆优化Dijkstra]
  13. 《js高级程序设计》--第三章数据类型
  14. qt书籍推荐
  15. Git 解决添加到.gitignore的忽略项不生效的问题
  16. CSS实现水平垂直居中方式
  17. jQuery获取标签中的元素
  18. python类型之间的转换
  19. [cocos2dx enhancement] CCPlatformMacros.h
  20. Tinker 热修复框架 简单上手教程

热门文章

  1. POJ 3352 Road Construction(边双连通分量,桥,tarjan)
  2. AJAX在GBK编码页面中传中文参数乱码的问题
  3. Linux中 干掉原来的PHP方法
  4. 关于python中使用mongodb模块,save和insert的小问题
  5. Android 开发框架介绍
  6. JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结 【转】http://blog.csdn.net/uniqer/article/details/7789104
  7. Oracle 课程三之表设计
  8. xml-xml试题
  9. Jedis的Sharded源代码分析
  10. lightoj 1023