这些年的开发过程中,稀奇古怪的问题没少遇到。所谓常在河边走,早晚遇见鬼。
举几个例子,当年用IP卡打电话太多太勤,竟然有好几次在打完电话之后,发现卡上的余额一点没少!肯定是电信的计费系统有问题,哼哼,被他们剥削了这么久,占他们一点便宜也心安理得!听说现在经常还有个人银行卡莫名其妙多钱少钱的事情,觉得银行的系统也不过尔尔。
分享几个我曾经遇到的几个怪问题,比较有难度和迷惑性。可有同道也遇到过类似的奇怪问题?
动用你智慧的大脑,先分析一下这几个事件的原因。稍后我会给出最终的解决方式,但不一定是正确的和最好的。集思广议先。
[b]问题一、客户无法登录系统[/b]
貌似,这不能称得上是一个问题吧?按常理,无法登录,那肯定server端出问题了,或者是程序,或者是数据库。再不济,也是客户自己的原因。
话说在2002年的某一天,公司网站(apache+php)出现了全国约一半的用户无法登录的情况,输完用户名和密码就报“该页无法显示”(恨人啊,你要再说得详细点也好),但是在我们公司内部,是可以正常登录的。不能登录的用户分布在全国各个地区,但不解的是,在同一个地区,竟然也有部分用户能登录部分不能登录的情况。这是怎么回事?大家都是一头雾水。要说server端有问题吧,又有一半的用户能登录。要说那一半不能登录的用户客户端或网络的问题吧,可是他们的情况不一,分散全国各地,怎么会这么巧合呢?再说B/S结构,客户就是只需要浏览器的嘛。
亲自到北京的一个客户那里去,在他们的电脑上试了一下,还真是报这样的错误(试着登录了几十次,竟然有一次还登录成功了,怪)。
why??
[b]问题二、数据库事务部分失效[/b]
一个系统中有一个数据导入的模块,一直运行得很正常很正常。突然有一天,客户反映最近有一部分数据经常丢失,导不进去。甚为惊讶,不应该啊,我们是开启了事务的,要导就全导进去,或者全部无法导入,怎么会出现只导入一部分数据的情况呢?而且,把数据拿到我们这边的测试环境中,一点问题也没有啊。只好亲自到客户那边,自己一试,还真是会少一部分数据。而且每次少的数量都不一样,就是没有一次全部导入的!
检查代码,事务开启/执行sql/提交/回滚,没问题。
在运行过程中跟踪每一条导入数据的sql语句,没有发现哪一条sql报错。最后也正常执行了commit。
把所有的sql打印出来,统一放到sql客户端去手工执行,数据全部导入,一条不少!
代码也没问题,sql也没问题,事务也没问题,那问题还是出现了,why??
[color=red][b][数据库是sqlserver2000][/b][/color]
[b]问题三、系统的查询统计速度极慢[/b]
一个决策支持系统,主要做统计分析,数据量虽然很大(10几个G),但运行得一直很稳定,速度也还不错。但突然有一天,客户反映统计分析的速度变得极慢,慢到无法使用。
到现场,代码没问题,并且一直没动过。那就处理数据库吧,重建索引,不行;重新部署安装环境,不行;重新安装sql server,不行。
把统计分析的代码取出来,到sql客户端执行,速度挺快的嘛!为什么同样的代码,在程序里执行就那么慢呢?
why??
[color=red][b][数据库是sqlserver2000][/b][/color]
[b]问题四、表单信息无法提交[/b]
由于客户众多(几万家),所以报的错也是五花八门。
有一个表单提交(post),有很多小数据项,大概有三四十项的数据吧。提交后台保存,一般都没什么问题。但是就是有几个客户反映,他们一提交,后台程序就报错(前台javascript并没报错),提示他们要先输入数据。我们这边做测试,填入和客户一模一样的数据,不报错啊!怎么回事?
举几个例子,当年用IP卡打电话太多太勤,竟然有好几次在打完电话之后,发现卡上的余额一点没少!肯定是电信的计费系统有问题,哼哼,被他们剥削了这么久,占他们一点便宜也心安理得!听说现在经常还有个人银行卡莫名其妙多钱少钱的事情,觉得银行的系统也不过尔尔。
分享几个我曾经遇到的几个怪问题,比较有难度和迷惑性。可有同道也遇到过类似的奇怪问题?
动用你智慧的大脑,先分析一下这几个事件的原因。稍后我会给出最终的解决方式,但不一定是正确的和最好的。集思广议先。
[b]问题一、客户无法登录系统[/b]
貌似,这不能称得上是一个问题吧?按常理,无法登录,那肯定server端出问题了,或者是程序,或者是数据库。再不济,也是客户自己的原因。
话说在2002年的某一天,公司网站(apache+php)出现了全国约一半的用户无法登录的情况,输完用户名和密码就报“该页无法显示”(恨人啊,你要再说得详细点也好),但是在我们公司内部,是可以正常登录的。不能登录的用户分布在全国各个地区,但不解的是,在同一个地区,竟然也有部分用户能登录部分不能登录的情况。这是怎么回事?大家都是一头雾水。要说server端有问题吧,又有一半的用户能登录。要说那一半不能登录的用户客户端或网络的问题吧,可是他们的情况不一,分散全国各地,怎么会这么巧合呢?再说B/S结构,客户就是只需要浏览器的嘛。
亲自到北京的一个客户那里去,在他们的电脑上试了一下,还真是报这样的错误(试着登录了几十次,竟然有一次还登录成功了,怪)。
why??
[b]问题二、数据库事务部分失效[/b]
一个系统中有一个数据导入的模块,一直运行得很正常很正常。突然有一天,客户反映最近有一部分数据经常丢失,导不进去。甚为惊讶,不应该啊,我们是开启了事务的,要导就全导进去,或者全部无法导入,怎么会出现只导入一部分数据的情况呢?而且,把数据拿到我们这边的测试环境中,一点问题也没有啊。只好亲自到客户那边,自己一试,还真是会少一部分数据。而且每次少的数量都不一样,就是没有一次全部导入的!
检查代码,事务开启/执行sql/提交/回滚,没问题。
在运行过程中跟踪每一条导入数据的sql语句,没有发现哪一条sql报错。最后也正常执行了commit。
把所有的sql打印出来,统一放到sql客户端去手工执行,数据全部导入,一条不少!
代码也没问题,sql也没问题,事务也没问题,那问题还是出现了,why??
[color=red][b][数据库是sqlserver2000][/b][/color]
[b]问题三、系统的查询统计速度极慢[/b]
一个决策支持系统,主要做统计分析,数据量虽然很大(10几个G),但运行得一直很稳定,速度也还不错。但突然有一天,客户反映统计分析的速度变得极慢,慢到无法使用。
到现场,代码没问题,并且一直没动过。那就处理数据库吧,重建索引,不行;重新部署安装环境,不行;重新安装sql server,不行。
把统计分析的代码取出来,到sql客户端执行,速度挺快的嘛!为什么同样的代码,在程序里执行就那么慢呢?
why??
[color=red][b][数据库是sqlserver2000][/b][/color]
[b]问题四、表单信息无法提交[/b]
由于客户众多(几万家),所以报的错也是五花八门。
有一个表单提交(post),有很多小数据项,大概有三四十项的数据吧。提交后台保存,一般都没什么问题。但是就是有几个客户反映,他们一提交,后台程序就报错(前台javascript并没报错),提示他们要先输入数据。我们这边做测试,填入和客户一模一样的数据,不报错啊!怎么回事?