刚结束一个网络银行项目,新版本上线后第二天,中间业务平台突然down掉(即网银的大额转账发中间业务平台,但平台down掉了,所以网银在那等待返回信息,直到60秒返回超时),按说网银中只有和中间业务平台有关的业务受影响,但很多网银用户都投诉个人网银无法登录,卡死在登录首页(附:登录个人网银首页时会查询数据库中的网银公告信息并显示)
解决上面问题,还要从数据库连接池说起。dbpool(一般将连接数据库缓冲池的数量设置为60,即60个数据库访问句柄,分配给网银20个连接,支付20个,卡通5个等等),现在有两种拿到数据库访问句柄的方式:1每次操作数据库前得到句柄,query或insert后释放该句柄2该客户执行一个网银操作(即执行一个action的execute或submit)前得到句柄,执行此操作后才释放句柄,怀疑公司框架采用的方法2从而导致:当一个交易(此交易首先查询数据库得到客户号,然后发此客户号到核心进行查询)连接核心系统60秒超时,此交易将占有一个访问数据库的句柄,而一分钟内有20个客户进行转帐交易,当第21个客户登录首页时(登录首页交易会查询网银数据库的银行公告信息,访问数据库句柄的线程都锁住了,他就无法访问数据库,就在那儿傻等直到连接数据库超时),就卡在首页不动
如何判断我们的框架是采用那种方式锁住句柄的呢,看公司源码是一个方法,可公司框架源码都进过加密了,变量都是abcd,读起来很吃力,所以我想了个笨法子:首先我们将缓冲池的链接数量设置少一些设为2。在配置文件中写3个简单交易【A页面进过execute方法跳转到B页面,执行进入execute方法(方式2)中首先执行一条sql1(方式1),执行后再执行休眠1分钟Thread.sleep(1000*60L),然后再执行一条sql2语句(这句话的作用下面会说)】,第二个交易休眠1小时(让他始终占据一个访问数据库句柄线程),第三个交易是执行sql3语句。启动服务器开打并提交A页面,然后提交第二个交易,即现在仅有的2个连接都被我们锁住了。接下来我们执行第三个交易,但此时没有查询网银数据库的句柄可用,故IE卡在那里了。1分钟后(1000*60毫秒),后台日志发现先执行了sql1,然后执行了sql2,最后执行了sql3,则证明:公司框架的一个不足,即在执行过一个execute前拿到一个访问数据库句柄,执行execute之后方才释放此句柄,故会造成上面的现象:其他用户访问网银首页卡在那儿不动无法访问。
分享到:
相关推荐
CTO,对于JDO和Hibernate有过一些激烈的争论,我曾经耐心的看了一遍,仍然没有发现针对Hibernate真正有力的攻击,那些所谓的攻击无非针对Hibernate没有一个GUI的配置工 具,没有商业公司支持,没有标准化等等这些站...
CocosCreator小游戏框架 此项目是我使用CCC开发小游戏的一些总结,主要是一些可以复用的模块,特别是处理一些跨平台的问题,让开发者尽量少关心游戏业务逻辑以外的事。脚本使用Typescript,欢迎各路大侠补充pr。 CCC...
中午的时候发了第一篇 Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块 ,发现实现上还是有问题,有很多理解不到位的地方,晚上详细解决下了,终于实现MVC各模块按需加载了,哈皮。 上篇文章中,关于...
当我们在程序员的岗位做得出色,被任命为技术经理(组长、主程序)时,除了提拔的喜悦,还会有种面对新问题域的茫然感。 以前只用做好自己的工作,现在需要负责团队的绩效 以前只用和产品、测试沟通,现在明显发现要...
均由自己编写,功能还是比较全的。可供Delphi7入门者学习参考。虽有部分功能未实现,但主要框架均以打好。...还有就是之前那个有点问题的要了两个积分,在此对下载过的朋友表示歉意。 交流:shen_gan@sina.com
把鼠标移到下拉框上,然后点击下拉框的按钮,你就会发现神奇之处,注意,有点小遗憾,下拉输入框并不能选择,只能点击右侧的箭头选择内容,不过这问题可以解决,你把需要选择的内容写入第二级一般就没事了。
在Vista系统里,有个挺酷的功能,就是“程序缩略图”,有点3D效果,这个功能,调用了dwmapi.dll 这个库,而dwmapi.dll又引用了msvcrt.dll中的_except_handler4_common功能。然而,在XP系统中,系统自带的 msvcrt.dll...
看了福娃的MonoRail学习-入门实例篇,蛮好的,不过就是在VS2005上执行有点问题,我把它稍微改动了一下。可以直接在VS2005中编译、执行了。 下载 :http://www.cnblogs.com/Files/firstyi/MonoRailSample.rar
界面透明度247,所以软件看起来有点背景有图案花色的样子是因为背景的壁纸关系 调用了WKE引擎 通过HTML5 / JS /CSS 构造易语言UI窗口交互,使其富有更强大动画,视觉效果 本框架免费,无毒,无暗桩,请放心使用 增加...
发现做这个CMS最有关系的就是这个功能,给管理员扫描本机的一些目录,但是过程中遇到了问题,发现flask很少那种可以打开 文件夹让管理员选择目录的插件,有一个可以利用的就是 flask-Admin 这个插件,但是吧,我都写...
7. **测试与调试**:修改后的模板需要进行充分的测试,确保所有新增功能的正常运行,以及原有功能不受影响,及时发现并修复可能出现的问题。 8. **文档记录**:在修改模板的过程中,保持良好的文档记录至关重要,这...
它鼓励我们跳出传统的思维框架,从问题的对立面或者不同角度去探索解决方案。 在上述故事中,造纸工人的例子是一个典型的逆向思维应用。他没有被生产错误的废纸所困扰,而是通过改变视角,发现这些废纸的吸水性能...
同时,利用微信提供的监控工具,如微信小程序性能分析,可实时监测小程序的运行情况,及时发现并解决问题。 通过分析"tech_bbs 3.0.14"这个压缩包,我们可以了解到小程序开发的基本流程、技术栈以及版本控制的概念...
来到一个新的工作环境,最能发现自身的缺乏,这几个月,抱着虚心学习的态度,学习公司的开发流程,熟悉公司的企业文化,了解公司产品框架,主要技术,主动和同事沟通、学习经历,希望能更快的融入公司、融入开发团队...
一直觉得wxpython占用内存比较多,在工作中写的一些小程序应用,一对比其它的小程序,发现内存相差确实有点大。 测试了下QT框架 复制代码 代码如下:import sys,timefrom PyQt4 import QtCore, QtGui#import wxif __...
这有点像麦肯锡方法,不要重新发明一个轮子,就是应用了函数思维,需要时直接借用原有的思维模式,重新输入条件,进行问题解决。例如,编程者通常会把那些将会被重复使用到的运算过程或方法,先编写并储存为函数,...
微服务架构的兴起带来了许多挑战,如技术框架的选择、核心基础模块的建设、规范化等问题。这些挑战使得团队和个人在实现微服务架构时感到困惑和难题。 解决方案的整体架构 解决方案的整体架构可以分为三大部分:...
开发者可能面临并解决了版本升级带来的问题,同时发现了一些游戏性能或视觉效果方面的问题,需要进一步调试和完善。文件列表中的"flyshoot"可能是指游戏的主程序或相关的资源文件。对于希望学习cocos2dx游戏开发或...
初步尝试 Keras (基于 Tensorflow 后端)深度框架时, 发现其对于 GPU 的使用比较神奇, 默认竟然是全部占满显存, 1080Ti 跑个小分类问题, 就一下子满了. 而且是服务器上的两张 1080Ti. 服务器上的多张 GPU 都占满, ...