web页面过一段时间再次访问时显示数据库连接错误
这个问题是我之前遇到的,过了很久才想着去解决它,因为这也没多大影响,无非就是再访问一次的问题,后来有一次观察网站的运行情况时,发现这个问题还挺严重,如果一直用,就不会出现问题,如果中间歇一会,再用就会提示数据查询失败,稍后重试,我之前还一直以为是偶尔的数据库问题,这次发现绝对不是数据库的问题,好了,开始着手解决。
大概找了一下规律,发现只要休息一会再次使用网页查询就会报错,这个报错是后端查询数据库失败报的,那就看后端的代码,反复看了好几遍,发现没有问题,那为什么会报错呢,网上搜了一下,有人说是数据库的timeout设置问题,我就去查看了一下数据库的timeout数据,显示如下:

这个数据很正常啊,怎么会导致几分钟后,连接就失效了呢?这里我后端是用python写的,数据库的连接使用的是SQLALchemy,SQLALchemy的重连机制在默认情况下是2个小时,这个也没有问题,服务器上的代码不便调试,于是我就在自己的虚拟机上调试一下,发现虚拟机上根本不会出现连接失败的问题,两边的代码是一样的,唯一的区别就是数据库不同,虚拟机使用的是本地的数据库,服务器使用的是另一台服务器的数据库,这时我意识到问题了,之前查询的timeout是当前服务器的,而不是使用到的服务器的,查询数据库服务器的timeout发现数据也是正常的:

后来查询global变量发现问题出现在这里,SHOW GLOBAL VARIABLES LIKE '%timeout';

这里的timeout和interactive_timeout都是100s,难怪会出现每过一段时间数据库连接就中断呢,后来询问了同时这个参数设置的原因,好像是数据采集端使用的是labview写的,为了防止占用太多的连接,所以将该值设置的很短,既然数据库的设置不能改,那就改我们的代码,SQLALchemy中有一项配置是来设置重连机制:SQLALCHEMY_POOL_RECYCLE,将该值设置为小于timeout的值即可,于是将SQLALCHEMY_POOL_RECYCLE = 90,重启服务器的应用,问题解决了。
从这个问题看出,其实有时候一些报错就是某个原因引起的,但是因为查询的位置出错,导致花费了很多额外的时间,就像这个,本来应该查数据库服务器的信息,结果查的是应用服务器的信息(其实这两个服务器的数据库内容是一致的,我做的主从同步,一直想把查询和增删改的数据库分开,这里还没有分开,但是自己意识中错误的认为分开了)。
web页面过一段时间再次访问时显示数据库连接错误的更多相关文章
- 关于EF第一次加载慢或过一段时间不访问时再次访问加载慢问题的总结
优化方案 1.安装Application Initialization 这是在iis8出来后才有的,iis8内置的功能,而对于iis7.5也提供了一个扩展以支持这个功能. Application In ...
- 【生产环境】Tomcat运行一段时间后访问变慢分析历程
环境运行一天或者几天,网站访问就很卡,手机端app访问页面出现白屏.Tomcat运行一段时间后访问变慢,但是cpu,内存都正常.日志也是发现不了啥.... 问题的原先分析 1.环境配置(cpu,内存, ...
- 所有城市list每次从页面花1段时间抽取后写入到数组,
所有城市list每次从页面花1段时间抽取后写入到数组,
- js实现类似页面广告一段时间自动打开一段时间自动关闭的功能
js实现类似页面广告一段时间自动打开一段时间自动关闭的功能 一.总结 Window 对象的 open()方法:window.open('测试页面.html','news','height=300,wi ...
- 【转载】vue-cli搭建的环境,用nginx做代理服务器,访问时显示:Invalid Host header
来源:https://blog.csdn.net/Cookysurongbin/article/details/86077241 vue-cli搭建的环境,用nginx做代理服务器,访问时显示:Inv ...
- Web页面实现后台数据处理进度与剩余时间的显示
1.页面后台代码添加如下属性: /// <summary> /// 总数 /// </summary> private double total { set { Session ...
- 访问nginx提示gateway timeout 504 ,发现总是当调用时间超过30s时提示504错误
解决办法: 需要修改php-fpm的配置文件 request_terminate_timeout=30s 参考文档: http://baike.baidu.com/view/641394.htm ht ...
- nginx默认访问目录时显示403错误
author :headsen chen date: 2018-04-25 17:17:25 nginx安装完成后默认的http页面里访问目录的话会报403的错误: 和Apache进行比较,Apac ...
- C#数据绑定中,时间为空时显示时间为原始日期问题
这个问题一般出现在用实体时,实体的时间格式没有加?号.加了之后就默认为空,没有数据时不会为原始时间了.
随机推荐
- 禅道的bug提交
- PyQt(Python+Qt)学习随笔:树型部件QTreeWidget中判断项是否首列跨所有列展示的isFirstItemColumnSpanned方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在前面<PyQt(Python+Qt)学习随笔:QTreeWidgetItem项是否首列跨所有 ...
- javascript中 fn() 和 return fn() 的区别
在js中用return和不用return,输出结果有的时候傻傻搞不清,之前在网上看到个例子挺经典,不过讲的不清楚,上例子: var i = 0; function fn(){ i++; if ...
- CSP-S 2019 Solution
Day1-T1 格雷码(code) 格雷码是一种特殊的 \(n\) 位二进制串排列法,要求相邻的两个二进制串恰好有一位不同,环状相邻. 生成方法: \(1\) 位格雷码由两个 \(1\) 位的二进制串 ...
- CF1407D Discrete Centrifugal Jumps 题解
蒟蒻语 写了 \(100\) 行的 线段树上ST表维护二分维护单调栈维护dp, 结果最后发现只要俩单调栈就好了 = = 蒟蒻解 首先 \(dp_i\) 表示从 \(1\) 楼到 \(i\) 楼要跳几次 ...
- 把演讲人的桌面、头像、声音合成后推送到 指定的直播流平台上; 录制电脑桌面、摄像头头像、声音保存为本地视频; 适用于讲课老师、医生等演讲内容保存为视频; 提供PPT嵌入Winform/WPF解决方案,Winform/WPF 中嵌入 office ppt 解决方案
提供PPT嵌入Winform/WPF解决方案,Winform/WPF 中嵌入 office ppt 解决方案 Winform/WPF 中嵌入 office ppt(powerpoint)解决方案示: ...
- 五、Zookeeper基于API操作Node节点
安装zookeeper :linux下安装Zookeeper 3.4.14 zookeeper 分为5个包: org.apache.zookeeper //客户端主要类文件 org.apache.zo ...
- Springboot mini - Solon详解(二)- Solon的核心
Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...
- NPM相关知识点
1.Windows环境变量的配置 npm config set prefix "D:\Program Files\nodejs\node_global" npm config se ...
- 1.微博回调接口 和绑定user接口
1.1 oauth/views.py 中添加试图函数 http://192.168.56.100:8888/oauth/weibo/callback/ # 通过vue前端传入的code,微博身份验证c ...