shuxx

导航

静态变量惹的祸

问题描述:

    最近一用户反应,他们的门户待办偶尔会出现待办数据和列表出不来,出现的频率估计30次出现1次的样子。项目现场的同事经过多次努力后问题依旧,最终这个问题摆在了我的面前.

问题分析解决过程:

    1:向项目现场同事了解情况,得知:

  1. 问题虽然不是每次都出现,但确实可以重现(点了9次后出现了1次)。
  2. 待办采取的技术是:ajax[自己写的javascript 脚本]+ web service ,采取过兼容更多的XML组建,特殊字符的处理。

2:一下是解决步骤:

        2.1 为了方便测试解决的效果和重现问题,用NET写了一个桌面程序自动调用,发现错误时报警,以50次调用为一个测试单元。

        2.2 为了排除是程序的问题还是数据库端出了问题,将程序单独部署到一台测试服务器上(连接同样的数据库),用同样测试工具测试200次,发现问题没有出现,基本排除数据库的问题。

        2.3 将web service 单独部署到服务器上,测试问题没有出现。

        2.4 将首页门户获取数据的服务改为新部署的服务。测试发现原服务问题不再出现,而新服务出现问题了。怀疑问题出现多用户并发后导致。

        2.5 跟踪数据库执行的SQl 语句,发现执行一段时间后,执行的SQl 语句变掉。

        2.6 看来只能检查源代码了,通过申请要到源代码,通过检查发现如下代码:

            //v1.2新增,是否需要从总厂抓取待办数据并进行合并,0:否;1:是。静态变量

         private static string __IfUnitData;

              

             //v1.5新增,用户当前样式

        private static string _Style;

 

             //v1.6新增,用户id

             private static string __UserCode;

 

             //v1.7新增,根据需要,将jigou_url做一个全局变量

             private static string __jigou_url;

        2.7 程序把属于特定用户的数据定义成静态变量。估计原因就是这里了

        2.8 将静态变量改掉,部署后测试问题基本解决,等待生产环境的用户实际效果反馈,从上午9点到下午3点。^_^ 还有两个半小时才下班,可以上上网啦!

 

posted on 2009-05-15 09:22  舒秀宣  阅读(289)  评论(0编辑  收藏  举报