小问题,大智慧
来源:互联网 发布:程序源码 编辑:程序博客网 时间:2024/04/29 20:32
遇到一个很奇怪的问题:现在的程序开发基本上都是基于3层的开发模式:展现层,业务逻辑层,数据库层。也就是经常说的CSS或者是BSS,我认为统称为3层结构,因为本质上并没有太大的区别。展现层的方式各种各样,这不是我此次遇到的问题。
我这次遇到的问题是:一个交互涉及的表很多,而且数据量也大,不能全部拿到中间层(java实现)来做,因为这要耗费很大的时间提取然后处理。鉴于这个交互的共用度较低,我就在后台用oracle的存储过程来实现了。但是在测试发现一个很怪异的问题:当一个一个单位的调用该过程时,程序能够很好的响应,并且返回前台操作成功的提示。但是当我用经办机构来做的时候(一个经办机构包含很多单位,实际上市循环单位来调用该过程),问题来了:程序不能正确的完成我的需求,总是报数据库操作失败。实际上我调试了中间的java层,请求已经接受,并且把执行存储过程的命令已经发给了oracle服务器,之后中间的java层只能等待oracle给的返回结果,但是这个返回值等的中间层很是不耐烦,因为数据量大,你得让oracle做完该做的事情后才能告诉java层我做完了,而且做得到底怎么样成功也好失败也好,好让人家java向前台回报,但是1秒过去了,2秒过去了,10秒过去了,60秒过去了,oracle好像是睡着了,迟迟不给java层回应(实际上oracle很忙,他在不停地忙着做啊,做啊……),但是java层着急了,java层说我不等了,于是把开启的事务给回滚了,报告前台:oracle执行失败了。实际上失败了吗?没有。但是事务已经回滚了,我得不到想要的结果。
我在后台单独执行这个存储过程,确实是一点问题没有,执行的时间是88秒,对于我而言,这么大的数据量在一分钟内完成甚至是稍多点都是很正常的,但是java层等不及了,于是发脾气,给前台报oracle数据库失败。怎么说呢?不能全怪java,这是请求与响应之间的等待时间问题,在装了IE5或更高版本后会存在这个问题,默认的请求与响应延时为60秒,即发出请求后一分钟不给我回应,我就不等了,就要重新发请求。现在知道原因了,说起来挺简单,但是最开始我不知道 是什么原因造成的,因为我跟到java层把执行储存过程的命令发给oracle服务器后,剩下的工作就是oracle的事情了,于是我test存储过程,在经过了85秒之后,过程成功结束,而且也得到了我想要的结果,但是从前台这样一路走来就不行呢?我猜想可能是oracle给 java层的响应时间超出了java的等待时限。起初我不知道还有参数控制java层的等待时间,我能做的就是优化后台存储过程,让它快点跑,早点给java层响应,这样不就好了,但是谁都知道优化工作,那不是弄一点就能立马见效的,更何况,写的时候就已经注意了优化,所以再优化的空间就更小了,所以想尽了办法来优化,最后能够82秒执行完。3秒的时间我整整耗费了一个上午的时间啊!既然这么背,吃饭的时候就发发牢骚吧。但是我不经意的一说,刚好赶上一个同事也遇到此类问题,他说在注册表新增一个值,重启就好。我的妈啊!那种感觉真的是如释重负啊!
下面把这个参数介绍一下:
名称 : ReceiveTimeout
所属路径:HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/Internet Settings
键值类型:DWORD
值大小设定:值=(秒)* 1000 ;即如果想设置为3分钟:180*1000=180000毫秒。
注意事项: 设定值时选择10进制。
引用:
Add a ReceiveTimeout DWORD entry with a value of ()*1000 in the following registry subkey:
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/Internet Settings
For example, if you want the time-out duration to be 8 minutes, set the value of the ReceiveTimeout entry to 480000 (<480>*1000).
Restart the computer.
该参数的作用:
The time, in seconds, that a Vuser will wait to receive the response of a specific HTTP request within a step before aborting.
感触:
你的问题在别人可能不是问题,或者是别人也曾经遇到过但是已经解决!
- 小问题,大智慧
- 小问题大智慧
- 大智慧小问题
- 小动物大智慧
- 小故事大智慧
- 小故事大智慧
- 小幽默大智慧
- 小故事大智慧
- 小常识,大智慧
- 小知识,大智慧!
- 小想法大智慧
- 小智慧,大感动
- 小生活,大智慧
- 小变量,大智慧
- 小知识大智慧
- 小知识 大智慧
- 数据结构测试题。小问题见大智慧!
- 小问题有大智慧-代理服务器的监测
- ms sql 交叉表的写法,列不固定
- Windows Server2008之WDS完全攻略
- Slony-I for Win的配置文档
- 初论自定义类型函数指针(返回函数指针函数的定义)
- resin数据库连接池配置
- 小问题,大智慧
- Eric Raymond:几种计算机语言的评价
- 常用的SQL
- setTimeout与setInterval
- 体验Windows 7新特性之基于VHD虚拟磁盘文件启动计算机
- 再议UTF-16的编码
- 《C安全编码标准》阅读有感及个人观点(1):PRE00-C
- MyEclipse 6.5 异常 java.lang.UnsupportedClassVersionError: Bad version number in .class file
- ajax中的xmlhttprequest对象介绍