`
together
  • 浏览: 220075 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

曾经发生在身边开发过程中的灵异事件

阅读更多
  这些年的开发过程中,稀奇古怪的问题没少遇到。所谓常在河边走,早晚遇见鬼。
  举几个例子,当年用IP卡打电话太多太勤,竟然有好几次在打完电话之后,发现卡上的余额一点没少!肯定是电信的计费系统有问题,哼哼,被他们剥削了这么久,占他们一点便宜也心安理得!听说现在经常还有个人银行卡莫名其妙多钱少钱的事情,觉得银行的系统也不过尔尔。

分享几个我曾经遇到的几个怪问题,比较有难度和迷惑性。可有同道也遇到过类似的奇怪问题?
动用你智慧的大脑,先分析一下这几个事件的原因。稍后我会给出最终的解决方式,但不一定是正确的和最好的。集思广议先。
问题一、客户无法登录系统
  貌似,这不能称得上是一个问题吧?按常理,无法登录,那肯定server端出问题了,或者是程序,或者是数据库。再不济,也是客户自己的原因。
  话说在2002年的某一天,公司网站(apache+php)出现了全国约一半的用户无法登录的情况,输完用户名和密码就报“该页无法显示”(恨人啊,你要再说得详细点也好),但是在我们公司内部,是可以正常登录的。不能登录的用户分布在全国各个地区,但不解的是,在同一个地区,竟然也有部分用户能登录部分不能登录的情况。这是怎么回事?大家都是一头雾水。要说server端有问题吧,又有一半的用户能登录。要说那一半不能登录的用户客户端或网络的问题吧,可是他们的情况不一,分散全国各地,怎么会这么巧合呢?再说B/S结构,客户就是只需要浏览器的嘛。
  亲自到北京的一个客户那里去,在他们的电脑上试了一下,还真是报这样的错误(试着登录了几十次,竟然有一次还登录成功了,怪)。
  why??

问题二、数据库事务部分失效
  一个系统中有一个数据导入的模块,一直运行得很正常很正常。突然有一天,客户反映最近有一部分数据经常丢失,导不进去。甚为惊讶,不应该啊,我们是开启了事务的,要导就全导进去,或者全部无法导入,怎么会出现只导入一部分数据的情况呢?而且,把数据拿到我们这边的测试环境中,一点问题也没有啊。只好亲自到客户那边,自己一试,还真是会少一部分数据。而且每次少的数量都不一样,就是没有一次全部导入的!
  检查代码,事务开启/执行sql/提交/回滚,没问题。
  在运行过程中跟踪每一条导入数据的sql语句,没有发现哪一条sql报错。最后也正常执行了commit。
  把所有的sql打印出来,统一放到sql客户端去手工执行,数据全部导入,一条不少!
  代码也没问题,sql也没问题,事务也没问题,那问题还是出现了,why??
  [数据库是sqlserver2000]

问题三、系统的查询统计速度极慢
  一个决策支持系统,主要做统计分析,数据量虽然很大(10几个G),但运行得一直很稳定,速度也还不错。但突然有一天,客户反映统计分析的速度变得极慢,慢到无法使用。
  到现场,代码没问题,并且一直没动过。那就处理数据库吧,重建索引,不行;重新部署安装环境,不行;重新安装sql server,不行。
  把统计分析的代码取出来,到sql客户端执行,速度挺快的嘛!为什么同样的代码,在程序里执行就那么慢呢?
  why??
  [数据库是sqlserver2000]

问题四、表单信息无法提交
  由于客户众多(几万家),所以报的错也是五花八门。
  有一个表单提交(post),有很多小数据项,大概有三四十项的数据吧。提交后台保存,一般都没什么问题。但是就是有几个客户反映,他们一提交,后台程序就报错(前台javascript并没报错),提示他们要先输入数据。我们这边做测试,填入和客户一模一样的数据,不报错啊!怎么回事?
分享到:
评论
21 楼 saneblue 2006-10-27  
问题2是不是要在begin transaction前先执行set xact_abort on呢?
20 楼 together 2006-10-27  
Lucas Lee 写道

1.php还不是服务端的?要不就是浏览器的版本问题,或者是插件引起的,比如3721之类的玩意,曾经烦过我。

批评得对。我的本意,是还没有牵涉到server端的日志和debug。

引用
这些问题有什么正解不正解的?
最多只能是按给出的信息猜测一下而已。

对于问题2,是有正解的。
19 楼 LucasLee 2006-10-27  
together 写道
Lucas Lee 写道
1.你应该在服务端记录详细日志,以帮助定位错误。这是一个良好软件必备的功能,不能期望总有Debug环境给你使用,正在使用中的web软件是不能总为你停机或调试的。


好的建议!但是本错误,与此无关。还没有牵涉到server端。提示词汇:apache+php

引用

2.看上去...象是数据库本身的问题。当然这个几率不大,不过也不是完全不可能。我就碰到了Oracle 9i提供的JDBC驱动的问题,xxxg.jar换为xxx.jar就可以了。那个g似乎表示的是debug版本。

思路对头。但遗憾,我们试过,非正解。还需要再努力。数据库是sqlserver。
引用

3.这个看来...我怀疑是代码有其他耗时的部分。或者两者执行时数据库负载不同。原因太多了...
机器很可能表现出诡异,但只要深入研究,细心观察不同之处,一般是能查出原因的。

已经禁止所有其他用户访问,并发数为一。代码可以肯定没问题。

欢迎google


这些问题有什么正解不正解的?
最多只能是按给出的信息猜测一下而已。

对于:
1.php还不是服务端的?要不就是浏览器的版本问题,或者是插件引起的,比如3721之类的玩意,曾经烦过我。
2,3.好像网络有问题
18 楼 codeutil 2006-10-27  

我遇到的了灵异现象。

本地测试正常的index.jsp,部署到远程linux服务器上的tomcat,
突然有一天,浏览器无法访问这个页面了。
死活猜不出原因,把work目录下生成的java文件删除了重新编译还是无法访问。
后来想个歪主意,把文件名改成index1.jsp,然后通过index1.jsp就可以访问了。

察看work目录下的index_jsp.java和index1_jsp.java

发现index_jsp.java的代码只有不到7k,而index1_jsp.java是16k,想不明白石什么原因:(



17 楼 together 2006-10-27  
yuanlm 写道
"把统计分析的代码取出来,到sql客户端执行,速度挺快的",说明问题出在Web服务器或者是网络上。要么程序有问题,要么Web服务器环境有问题。

网络速度没问题。创建数据库连接的时间也没问题。
因为访问查询条件页面,速度是很快的。在此页面中也需要从数据库获取一些基础数据的。
16 楼 yuanlm 2006-10-27  
"把统计分析的代码取出来,到sql客户端执行,速度挺快的",说明问题出在Web服务器或者是网络上。要么程序有问题,要么Web服务器环境有问题。
15 楼 foxty 2006-10-27  
1,2的问题没有 碰见过。

3的问题碰见过一次根这个有症状有点类似的。

当时客户的服务器在公司内部,我们直接开发好以后部署在服务器上然后再进行测试,是一点问题都没有。

后来把服务器搬到客户那里,访问速度超级慢,当时是一点头绪都摸不著,然后发现是数据库连接创建太耗费时间,平均创建一个connection需要10多秒,但是同样的代码换一个环境速度就非常快,后来听同事说因为他们内部网络限制了传输速度和流量(他们整个省的网络都是我们公司负责的)。就怀疑是不是网络环境的问题。

没有办法,后来就只能再服务器启动的时候通过servlet加载初始化数据库连接池,初始化30个conenction,也就是启动应用的时候会非常慢,用户使用速度就很正常了。
14 楼 together 2006-10-27  
clamp 写道
以前的一个案例,看讨论过程很有趣,呵呵
http://www.iteye.com/topic/10628

多谢,把这么老的一篇给翻出来了。确实也是一个妖怪问题。要怪只能怪ibm的ws确实有bug。我也遇到过在ws5.0里,必须用struts1.1才能正常启动应用的问题。换其它appserver都正常。

补充一个:曾经在做PHP开发的时候,遇到过一个困扰半天的怪问题。用户A一登录,就发现session中自己的名字变成了另外一个人的,难道又是session错乱?找了半天才找出原因所在:
php作为一个动态语言,它的变量引用是不需要事先定义的,包括session的使用。
由于写错了一个条件判断if ($username="abcd")。正确的应该用==,所以相当于把$username这个session重新赋值了。以后就规定所有的session在起名字的时候,必须像这样$session_username,并且在做条件判断的时候,必须将session变量放在==号的右边。
13 楼 clamp 2006-10-27  
以前的一个案例,看讨论过程很有趣,呵呵
http://www.iteye.com/topic/10628
12 楼 together 2006-10-27  
Readonly 写道
第3个有遇到过类似情况,是因为代码里面用了Cache,这个Cache能够设定一个数值,在超出这个值以后把旧的Object序列化到硬盘,结果数据量变大以后,频繁地进行IO操作,查询的数据越多,性能越差

虽然和我们的实际情况不完全一样,但是方向是对的,“磁盘性能”
11 楼 Readonly 2006-10-27  
第3个有遇到过类似情况,是因为代码里面用了Cache,这个Cache能够设定一个数值,在超出这个值以后把旧的Object序列化到硬盘,结果数据量变大以后,频繁地进行IO操作,查询的数据越多,性能越差
10 楼 together 2006-10-27  
ajooTrustno1 写道
dns的问题可能会引起这个问题吗?

有这个可能。
但是分散在全国各地,而且没有一个特定的规律。假如仅是网通用户或仅是电信用户,或仅是某几个省的用户有这样的问题,那还比较好分析一些。
9 楼 庄表伟 2006-10-27  
非常棒,这是真正有价值的帖子。

建议大家多多跟贴,提供自己身边的案例。
8 楼 together 2006-10-27  
Eden 写道
1的情况遇到过一次,某个系统大约一半用户无法登录,被客户召唤到现场,调试了半天程序没发现原因。最后发现是双机热备的问题,一台服务器失效了

这是一种可能。

但我们的系统apache+php,没有使用集群和负载均衡。就是单服务器。
7 楼 Eden 2006-10-27  
1的情况遇到过一次,某个系统大约一半用户无法登录,被客户召唤到现场,调试了半天程序没发现原因。最后发现是双机热备的问题,一台服务器失效了
6 楼 javavsnet 2006-10-27  
2 的确碰见过,可惜忘了是怎么解决的了:(
5 楼 together 2006-10-27  
Lucas Lee 写道
1.你应该在服务端记录详细日志,以帮助定位错误。这是一个良好软件必备的功能,不能期望总有Debug环境给你使用,正在使用中的web软件是不能总为你停机或调试的。


好的建议!但是本错误,与此无关。还没有牵涉到server端。提示词汇:apache+php

引用

2.看上去...象是数据库本身的问题。当然这个几率不大,不过也不是完全不可能。我就碰到了Oracle 9i提供的JDBC驱动的问题,xxxg.jar换为xxx.jar就可以了。那个g似乎表示的是debug版本。

思路对头。但遗憾,我们试过,非正解。还需要再努力。数据库是sqlserver。
引用

3.这个看来...我怀疑是代码有其他耗时的部分。或者两者执行时数据库负载不同。原因太多了...
机器很可能表现出诡异,但只要深入研究,细心观察不同之处,一般是能查出原因的。

已经禁止所有其他用户访问,并发数为一。代码可以肯定没问题。

欢迎google
4 楼 javavsnet 2006-10-27  
2 的确碰见过,可惜忘了是怎么解决的了:(
3 楼 badbobo 2006-10-27  
  难道代码中也藏着鬼?
2 楼 LucasLee 2006-10-27  
1.你应该在服务端记录详细日志,以帮助定位错误。这是一个良好软件必备的功能,不能期望总有Debug环境给你使用,正在使用中的web软件是不能总为你停机或调试的。

2.看上去...象是数据库本身的问题。当然这个几率不大,不过也不是完全不可能。我就碰到了Oracle 9i提供的JDBC驱动的问题,xxxg.jar换为xxx.jar就可以了。那个g似乎表示的是debug版本。

3.这个看来...我怀疑是代码有其他耗时的部分。或者两者执行时数据库负载不同。原因太多了...

机器很可能表现出诡异,但只要深入研究,细心观察不同之处,一般是能查出原因的。

相关推荐

    做一个恐怖、灵异的资讯类APP

    在这个标题中,我们关注的是开发一个以恐怖和灵异为主题的资讯应用程序。这涉及到多个IT领域的知识,包括但不限于移动应用开发(Android或iOS)、用户界面设计、内容管理系统、后端服务集成以及数据分析。 在移动...

    灵异相机 GhostCam v1.9.4

    灵异相机 GhostCam v1.9.4 版本:1.9.4软件语言:非中文软件类别:特效相机软件大小:8.23 MB适用固件:2.1及更高固件内置广告:有广告适用平台:Android 一款相机拍照软件,用它拍的照片会看到灵异现象! ...

    rails 常见灵异错误汇总

    在Ruby on Rails开发过程中,开发者可能会遇到各种各样的“灵异”错误,这些错误往往令人困惑,有时甚至让人感到无从下手。Rails框架虽然强大且灵活,但其复杂性也意味着可能出现各种意料之外的问题。以下是一些常见...

    Ext2.1API中文文档

    Ext2.1 API中文文档是针对Ext JS框架的2.1版本提供的开发接口参考手册,主要面向Web前端开发者,特别是那些使用JavaScript进行富互联网应用程序(RIA)开发的人员。Ext JS是一个强大的JavaScript库,用于构建功能...

    在idea继承开发环境中开发servlet程序的基本步骤

    在IDEA集成开发环境中开发servlet程序

    记一次灵异般的 Bug 调试经历1

    【标题】:“记一次灵异般的 Bug 调试经历1” 【描述】:这篇文章讲述了作者在Quora上的一个热门经历,他受雇于一位心理学家修复一款输出异常的软件,该软件由其前任研究生编写。软件会在用户交互时显示不友好的潜...

    PHPWind论坛 恐怖-灵异风格

    PHPWind论坛 恐怖-灵异风格

    Ext 开发指南 学习资料

    8.10. 灵异事件,Ext.state 8.11. 所谓的事件 8.12. 回头谈一谈Ext里的ajax 9. 沉寂吧!我们要自己的控件。 9.1. 下拉树形选择框TreeField 9.2. 带全选的checkbox树形CheckBoxTree 9.3. 带全选的checkbox的grid 9.4....

    软件测试方法论-黑盒测试篇-开发人员眼中的测试方法

    7. **合,分析问题**:在发现问题后,测试人员需要深入分析,排除“灵异”现象,利用各种工具如Spy++(用于窗口和控件的监控)、Depends(分析程序依赖)等加速问题定位。此外,远程调试服务工具可以帮助远程解决...

    英语鬼故事.doc

    1. 鬼故事与文化:这个文档是一个关于英语鬼故事的集合,讲述了发生在爱丁堡的一段真实(或被认为是真实)的灵异经历。鬼故事是各种文化中常见的传统,它们反映了人类对未知、超自然现象以及死亡的好奇与恐惧。 2. ...

    帝国CMS仿五十一区灵异奇闻异事猎奇未解之谜网站模板.txt

    帝国CMS仿五十一区灵异奇闻异事猎奇未解之谜网站模板.txt

    关羽信仰普及背景的先行研究及对其的批判.docx

    但这些灵异事件主要发生在早已存在关羽庙宇的地方或是由官僚组织修建的庙宇。这意味着关羽信仰在东南地区的普及,并非全然由于对抗倭寇的需要。此外,万历年间,即使倭寇威胁已经减弱,关羽信仰仍然迅速普及,这表明...

    做Oracle数据库迁移,碰上了灵异的字符集问题,懵了

    这个就是那个出现灵异现象的test.dmp文件 博文链接:https://rainbamboo.iteye.com/blog/215343

Global site tag (gtag.js) - Google Analytics