MySQL社区

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 1283|回复: 0

[Java相关] 两台tomcat连接一台MySQL单库会存在线程见数据不同步的情况吗?

[复制链接]
发表于 2017-3-19 23:21:55 | 显示全部楼层 |阅读模式
各位高手,现遇一奇怪问题,请教一下:

背景如图:
截图20170319211638.png

一台mysql,timeout设为120秒。
两台tomcat,分别给用户和管理员提供web服务。
两台tomcat服务器连接池配置参数是一样的:
1
2
3
4
5
6
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver" validationQuery="SELECT 1"
testOnBorrow = "true" testWhileIdle = "true" timeBetweenEvictionRunsMillis = "30000"
minEvictableIdleTimeMillis = "1800000" numTestsPerEvictionRun="3"
maxIdle="90" maxActive="100" minIdle="10" initialSize="10"
removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"





遇到的问题:
用户下单后,管理员收到了邮件,但是根据邮件中的订单号在管理页面上搜不到信息,告诉我,几个小时后,我有时间登录后台管理页面查询,的确查不到数据,于是直接从我的电脑上用HeiDiSQL连接到mysql,查询订单号发现数据库里面是有数据的。于是重启了tomcat2,也就是管理后台的tomcat,再次通过管理页面查询,订单信息就能查出来了。

自己的分析:
1、曾经怀疑过是tomcat1在保存这个订单时遇到锁,tomcat2查询时就没有查出来。但是这样的情况重启tomcat2也应该没用啊,而且我直接登录到数据库,发现数据是存在的,因此排除了锁的问题。
2、由于重启了tomcat2就能解决问题,分析重启这个动作的本质,就是断开tomcat2到mysql的所有线程,重新建立新的连接。
3、如果分析2成立,那么就意味着mysql不同线程之间数据是不同步的?那如果一个连接持续了数个小时,那查询到的数据岂不是数个小时之前的数据了?绝对不会这样吧?

请教一下各位:
上面的问题是什么原因?应该怎么样避免和解决呢?谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周生; 联系电话:13911732319

GMT+8, 2024-4-17 07:54 , Processed in 0.073302 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表