灵异问题:关于Global Application_Start中的Timer问题。
在Application_Start中使用Timer定时执行一段程序。
我在本机和服务器1上测试完全正常。
在服务器2上使用出现理论上不正常的情况。
日志记录如下:
2011-09-09 12:36:19 开始创建索引到内存
2011-09-09 12:36:19 成功获取数据源: 22898 条
2011-09-09 12:36:20 开始创建索引到内存
2011-09-09 12:36:20 成功获取数据源: 22898 条
2011-09-09 12:36:29 索引创建完成。
2011-09-09 12:36:30 索引创建完成。2011-09-09 13:36:22 开始创建索引到内存
2011-09-09 13:36:22 成功获取数据源: 22902 条
2011-09-09 13:36:26 开始创建索引到内存
2011-09-09 13:36:26 成功获取数据源: 22902 条
2011-09-09 13:36:32 索引创建完成。
2011-09-09 13:36:36 索引创建完成。我能确定程序中只有timer在调用主程序方法。
并且调用的时候有锁定。
想知道 为什么 会在同一瞬间执行了两次主程序方法。(不要怀疑我在timer里面调用了两次)。
在本机和服务器1上正常(至少监视日志没发现不正常)
服务器2就出现如日志的结果。
区别在于 服务器2存在大量用户访问,而服务器1没有。timer 代码:
System.Timers.Timer aTimer = new System.Timers.Timer();
            //主程序在OnTimer方法中
            aTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimer);
            aTimer.Interval = 1000.0 * 60 * 60; 
            aTimer.Enabled = true;
            aTimer.Start();求原因,求思路,求方案...

解决方案 »

  1.   

    查看进程,是否有多个w3wp,然后修改iis的应用程序池设置。
    另外不推荐在asp.net的application中设置timer,因为application会被回收,尝试改成服务吧。
      

  2.   

    本帖最后由 net_lover 于 2011-09-14 12:36:20 编辑
      

  3.   


    确定Web园数目为1
    排除这种可能行,目前此问题依然存在。
    没找到原因...
      

  4.   

    监视w3wp确定 有且仅有一个。
      

  5.   

    很久没有回到这里来转悠了,针对以上问题,结论:问题出现于主服务器4核cpu 。