一个长时间运行的程序经常会在后台执行二次

toopcn 2017-10-19 09:50:36
比如一个批量添加数据的程序,读一个3万多行的csv文件,理论上运行后,就添加这3万条数据,但经常就会发生,一开始还好,一二分钟后,就有重复数据被添加上来了


但我明明只运行了一次,程序也没有bug,毕竟就是一个新增数据功能,不可能写错的



这里要想知道什么原因导至了这种情况发生
...全文
616 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
toopcn 2017-11-16
  • 打赏
  • 举报
回复
引用 11 楼 peng2739956 的回复:
如此 高傲的一个提问者 我这是第一次见。。 如果是这样,你何必来提问。
你怎么都有理,好吧,一下攻击我的问题有错误,一下又来攻击人品了
peng2739956 2017-10-25
  • 打赏
  • 举报
回复
如此 高傲的一个提问者 我这是第一次见。。 如果是这样,你何必来提问。
toopcn 2017-10-24
  • 打赏
  • 举报
回复
引用 9 楼 peng2739956 的回复:
都说了,这只是测试代码 随意写的,这里写的简单只是为了更明了,突出问题的核心是代码被莫名的执行二次 解决不了问题,就解决提出问题的人 不去关注问题是否存在,一直纠结我提的问题有没有问题 这样有意义吗,我写的代码完整无误,就不会被执行二次了? 这里最后更新一下,是电信的问题,不是阿里云的问题 在全国各地的电信中(共测3个地点),其中有二个地方会被重复执行,重复率基本是90%以上,要求是间隔短时间内的访问要求网址及参数不同 另一个地点,刚测的时候有发生过重复,后来就一直不重复了 更多地点没试,因为对我来讲我的问题已经解决了,我已经不需要在花精力去了解事情的完整原因了
peng2739956 2017-10-20
  • 打赏
  • 举报
回复
引用 6 楼 toopcn 的回复:
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Web.test
{
    public partial class test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Model.test model = new Model.test();
            for (int i = 0; i < 100000; i++)
            {
                model.number = i;
                Model.test.Add(model);
            }
        }
    }
}
这个是完整代码,先不说这添加方法对不对,好不好,只说这可能就会存在着重复加数据的情况,我用的是maxthon浏览器,等下我在用firefox试试,不知道和浏览器有没有关系 当然我实际代码会比这复杂,也不一定就是添加数据,基本都是一次运行几十分钟的,很容易出现重复的情况
代码写的明显就不对,很严重的一个问题就是没有去重,如果有重复数据 应该直接 return 或者说是continue。 先得查一下数据库是否存在这条数据
toopcn 2017-10-19
  • 打赏
  • 举报
回复
好了,问题找到了,和我程序无关,每次运行一个新的网址(含参数),如 http://test.com/test.aspx?1234 http://test.com/test.aspx?12345 过一会就会有另一个ip请求过来执行相同网址 我试了几次 101.226.125.100 101.226.33.225 都是上海电信的ip,谢谢二位版主解答,不知道是我服务器所在地区问题,还是别的什么情况
toopcn 2017-10-19
  • 打赏
  • 举报
回复
1.。不是每次都会出问题 2.。不是我多按二下网址的问题,因为我的程序是自动执行的,没有人为操作的情况,而且一般出现重复,都发生在第一次执行后的一段时间,不是间隔一二秒
toopcn 2017-10-19
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Web.test
{
public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Model.test model = new Model.test();
for (int i = 0; i < 100000; i++)
{
model.number = i;
Model.test.Add(model);
}
}
}
}


这个是完整代码,先不说这添加方法对不对,好不好,只说这可能就会存在着重复加数据的情况,我用的是maxthon浏览器,等下我在用firefox试试,不知道和浏览器有没有关系

当然我实际代码会比这复杂,也不一定就是添加数据,基本都是一次运行几十分钟的,很容易出现重复的情况


正怒月神 版主 2017-10-19
  • 打赏
  • 举报
回复
并且代码应该是有问题吧. 你循环读取line时,model的实例化应该在循环内部, 不然作为引用类型,你的model最后不是都变成了同一个?
foreach (string line in str2)
{
Model model=new Model();
          model.aaa=line;
          Model.test.Add(model);
}
  • 打赏
  • 举报
回复
你这段代码的触发调用机制问题,或者你有异常重试机制,也有可能有其它问题 就你这简单的文字描述就无法判断问题的
正怒月神 版主 2017-10-19
  • 打赏
  • 举报
回复
一个长时间运行的程序, 这个长时间运行,指的是运行一次,时间很长。 还是说这个程序是一个 window service服务之类的定时任务?
toopcn 2017-10-19
  • 打赏
  • 举报
回复
真没bug,而且我还故意用一个表来记录程序被运行的次数,发现被执行了多次 第二次的执行的时间会发生在第一次后的一段时间内,不确定,并且有可能不执行第二次 foreach (string line in str2) { model.aaa=line; Model.test.Add(model); } 就这么几行程序,能bug到哪去呢
exception92 2017-10-19
  • 打赏
  • 举报
回复
运行了一次,程序也没有bug,毕竟就是一个新增数据功能,不可能写错的 -》程序还是有bug的。唯一途径是测试+调试程序。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧