锁定老帖子 主题:曾经发生在身边开发过程中的灵异事件
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-10-27
举几个例子,当年用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并没报错),提示他们要先输入数据。我们这边做测试,填入和客户一模一样的数据,不报错啊!怎么回事? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-10-27
搞不懂,有意思!呵呵
|
|
返回顶楼 | |
发表时间:2006-10-27
1.你应该在服务端记录详细日志,以帮助定位错误。这是一个良好软件必备的功能,不能期望总有Debug环境给你使用,正在使用中的web软件是不能总为你停机或调试的。
2.看上去...象是数据库本身的问题。当然这个几率不大,不过也不是完全不可能。我就碰到了Oracle 9i提供的JDBC驱动的问题,xxxg.jar换为xxx.jar就可以了。那个g似乎表示的是debug版本。 3.这个看来...我怀疑是代码有其他耗时的部分。或者两者执行时数据库负载不同。原因太多了... 机器很可能表现出诡异,但只要深入研究,细心观察不同之处,一般是能查出原因的。 |
|
返回顶楼 | |
发表时间:2006-10-27
难道代码中也藏着鬼?
|
|
返回顶楼 | |
发表时间:2006-10-27
2 的确碰见过,可惜忘了是怎么解决的了:(
|
|
返回顶楼 | |
发表时间:2006-10-27
Lucas Lee 写道 1.你应该在服务端记录详细日志,以帮助定位错误。这是一个良好软件必备的功能,不能期望总有Debug环境给你使用,正在使用中的web软件是不能总为你停机或调试的。
好的建议!但是本错误,与此无关。还没有牵涉到server端。提示词汇:apache+php 引用 2.看上去...象是数据库本身的问题。当然这个几率不大,不过也不是完全不可能。我就碰到了Oracle 9i提供的JDBC驱动的问题,xxxg.jar换为xxx.jar就可以了。那个g似乎表示的是debug版本。 思路对头。但遗憾,我们试过,非正解。还需要再努力。数据库是sqlserver。 引用 3.这个看来...我怀疑是代码有其他耗时的部分。或者两者执行时数据库负载不同。原因太多了... 机器很可能表现出诡异,但只要深入研究,细心观察不同之处,一般是能查出原因的。 已经禁止所有其他用户访问,并发数为一。代码可以肯定没问题。 欢迎google |
|
返回顶楼 | |
发表时间:2006-10-27
2 的确碰见过,可惜忘了是怎么解决的了:(
|
|
返回顶楼 | |
发表时间:2006-10-27
1的情况遇到过一次,某个系统大约一半用户无法登录,被客户召唤到现场,调试了半天程序没发现原因。最后发现是双机热备的问题,一台服务器失效了
|
|
返回顶楼 | |
发表时间:2006-10-27
Eden 写道 1的情况遇到过一次,某个系统大约一半用户无法登录,被客户召唤到现场,调试了半天程序没发现原因。最后发现是双机热备的问题,一台服务器失效了
这是一种可能。 但我们的系统apache+php,没有使用集群和负载均衡。就是单服务器。 |
|
返回顶楼 | |
发表时间:2006-10-27
非常棒,这是真正有价值的帖子。
建议大家多多跟贴,提供自己身边的案例。 |
|
返回顶楼 | |