这个问题是我之前遇到的,过了很久才想着去解决它,因为这也没多大影响,无非就是再访问一次的问题,后来有一次观察网站的运行情况时,发现这个问题还挺严重,如果一直用,就不会出现问题,如果中间歇一会,再用就会提示数据查询失败,稍后重试,我之前还一直以为是偶尔的数据库问题,这次发现绝对不是数据库的问题,好了,开始着手解决。

  大概找了一下规律,发现只要休息一会再次使用网页查询就会报错,这个报错是后端查询数据库失败报的,那就看后端的代码,反复看了好几遍,发现没有问题,那为什么会报错呢,网上搜了一下,有人说是数据库的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页面过一段时间再次访问时显示数据库连接错误的更多相关文章

  1. 关于EF第一次加载慢或过一段时间不访问时再次访问加载慢问题的总结

    优化方案 1.安装Application Initialization 这是在iis8出来后才有的,iis8内置的功能,而对于iis7.5也提供了一个扩展以支持这个功能. Application In ...

  2. 【生产环境】Tomcat运行一段时间后访问变慢分析历程

    环境运行一天或者几天,网站访问就很卡,手机端app访问页面出现白屏.Tomcat运行一段时间后访问变慢,但是cpu,内存都正常.日志也是发现不了啥.... 问题的原先分析 1.环境配置(cpu,内存, ...

  3. 所有城市list每次从页面花1段时间抽取后写入到数组,

    所有城市list每次从页面花1段时间抽取后写入到数组,

  4. js实现类似页面广告一段时间自动打开一段时间自动关闭的功能

    js实现类似页面广告一段时间自动打开一段时间自动关闭的功能 一.总结 Window 对象的 open()方法:window.open('测试页面.html','news','height=300,wi ...

  5. 【转载】vue-cli搭建的环境,用nginx做代理服务器,访问时显示:Invalid Host header

    来源:https://blog.csdn.net/Cookysurongbin/article/details/86077241 vue-cli搭建的环境,用nginx做代理服务器,访问时显示:Inv ...

  6. Web页面实现后台数据处理进度与剩余时间的显示

    1.页面后台代码添加如下属性: /// <summary> /// 总数 /// </summary> private double total { set { Session ...

  7. 访问nginx提示gateway timeout 504 ,发现总是当调用时间超过30s时提示504错误

    解决办法: 需要修改php-fpm的配置文件 request_terminate_timeout=30s 参考文档: http://baike.baidu.com/view/641394.htm ht ...

  8. nginx默认访问目录时显示403错误

    author :headsen chen date: 2018-04-25  17:17:25 nginx安装完成后默认的http页面里访问目录的话会报403的错误: 和Apache进行比较,Apac ...

  9. C#数据绑定中,时间为空时显示时间为原始日期问题

    这个问题一般出现在用实体时,实体的时间格式没有加?号.加了之后就默认为空,没有数据时不会为原始时间了.

随机推荐

  1. 排序--ShellSort 希尔排序

    希尔排序 no 实现 希尔排序其实就是插入排序.只不过希尔排序在比较的元素的间隔不是1. 我们知道插入排序 都是 一个一个和之前的元素比较.发现比之前元素小就交换位置.但是希尔排序可能是和前第n个元素 ...

  2. PyQt(Python+Qt)学习随笔:QMdiArea多文档界面部件的subWindowActivated信号

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 QMdiArea的subWindowActivated在一个窗口激活( ...

  3. 第14.11节 Python中使用BeautifulSoup解析http报文:使用查找方法快速定位内容

    一. 引言 在<第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问>介绍了BeautifulSoup对象的主要属性,通过这些属性可以访 ...

  4. 性能测试学习之路 (二)jmeter详解(jmeter执行顺序 && 作用域 && 断言 && 事务 &&集合点 )

    1 Jmeter 工作区介绍 jmeter工作区分为3个部分:目录树.测试计划编辑区域.菜单栏. 2 Jmeter 执行顺序规则 Jmeter执行顺序规则如下: 配置元件 前置处理器 定时器 采样器s ...

  5. Scrum 冲刺第五天

    一.每日站立式会议 1.会议内容 1)进行每日工作汇报 张博愉: 昨天已完成的工作:学习如何编写测试计划 今日工作计划:学习如何编写用户手册 工作中遇到的困难:写文档也有很多讲究的点,花了很多时间 张 ...

  6. 从.NET转GO了

    前言 近几个月刚从.NET转到GO,入职了一个使用GO微服务的互联网公司.因为需要熟悉公司的微服务架构和适应新公司的节奏,所以最近没时间写博客,现在简单做个总结. 转GO的经历 自学GO 上一年的八月 ...

  7. springboot中使用h2数据库(内存模式)

    使用H2的优点,不需要装有服务端和客户端,在项目中包含一个jar即可,加上初始化的SQL就可以使用数据库了 在springboot中引入,我的版本是2.1.4,里面就包含有h2的版本控制 <!- ...

  8. QQ电话能定位

    QQ电话是网络电话,可以定位吗??? 下面介绍利用wireshark获取QQ好友IP实施精准定位 超详!! Wireshark Wireshark是一个使用WinPcap作为接口,直接与网卡进行数据报 ...

  9. Python定时任务利器—Apscheduler

    导语 在工作场景遇到了这么一个场景,就是需要定期去执行一个缓存接口,用于同步设备配置.首先想到的就是Linux上的crontab,可以定期,或者间隔一段时间去执行任务.但是如果你想要把这个定时任务作为 ...

  10. 自顶向下redis4.0(4)时间事件与expire

    redis4.0的时间事件与expire 目录 redis4.0的时间事件与expire 简介 正文 时间事件注册 时间事件触发 expire命令 删除过期键值 被动删除 主动删除/定期删除 参考文献 ...