• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ninechi
V2EX  ›  程序员

公司的一个内网系统,映射到外网,可随时访问,最近几天发现会丢失数据

  •  
  •   ninechi · Jul 30, 2019 · 4380 views
    This topic created in 2487 days ago, the information mentioned may be changed or developed.

    本人在月初刚开发完成、上线一个公司内部的综合管理系统,由于要挂在钉钉上使用,所以有将内网地址解析了公网 IP,一切正常。然而昨天到今天,我发现有一两个表单的数据在新增的时候,总是会丢失几个字段的内容(之前都不会)。

    个人分析:

    1、可能是解析公网 IP 导致的。因为解析后的 IP 地址固定是一个,但是公司一共有两个运营商的六个公网 IP,貌似在不同情况下回自动切换。而在切换的过程中,刚好系统正在接收数据,所以导致丢失?(网络这方面我懂的不多)

    2、系统 bug ?这部分的代码已经检查过若干次,测试环境也正常,应该不是这个原因。

    3、也是网络相关。由于是解析后的公网地址,即使在内网访问,也要绕一圈先从外网再到内网,在这过程中又因为某些原因导致数据丢失。

    有无大神来指点迷津。

    22 replies    2019-07-30 13:42:53 +08:00
    Sornets
        1
    Sornets  
       Jul 30, 2019
    事务?
    fishlium
        2
    fishlium  
       Jul 30, 2019
    我觉得不是网络问题,你直接在内网访问内网地址就可以排出网络问题了
    arthas2234
        3
    arthas2234  
       Jul 30, 2019
    这种问题复现很容易啊,打日志,把数据打印出来看一眼就知道了
    MonoLogueChi
        4
    MonoLogueChi  
       Jul 30, 2019 via Android
    那个从内网访问的话数据不会在外网绕一圈,只是解析的时候会有一个流程,而且 DNS 地址是缓存的,只要解析一次就可以好长时间有效
    GuangXiN
        5
    GuangXiN  
       Jul 30, 2019 via Android
    1. 你域名解析出来是哪个 ip 就是哪个 ip,和你公司有几个公网 ip 没关系。除非你自己把六个公网 ip 全加进去了。

    2. 你的字段是一次 http 请求中提交的还是多次分部分提交的?如果是后者,你有做提交失败重新发起的处理吗?

    3. 只要你是 http 请求里提交数据,就不存在绕一圈会丢失的问题。http 底层的 tcp 协议保证了数据包丢了也会自动重传,重传失败多次会断开连接。上层程序只需要处理成功和失败的情况,不会出现缺少字段的情况。
    chengran630
        6
    chengran630  
       Jul 30, 2019
    你的猜测都错误 没有依据
    你在添加数据库的地方 直接把数据写到 txt 里,然后对比缺失数据,首先确定是不是数据库的问题
    对了 看看公司的电脑 会不会被别人关电了?
    arrow8899
        7
    arrow8899  
       Jul 30, 2019
    看一下网关的日志,http 不会出现只丢一部分字段的情况,估计是客户端没传。
    encro
        8
    encro  
       Jul 30, 2019
    http 不存在丢失的问题,所以可能是:
    1,客户端丢失了;
    2,程序丢失了;
    3,数据库丢失了;
    4,在其他地方被改写了;

    排查方法是:1,接口日志; 2,数据表增加最后修改时间(自动);
    yylyan
        9
    yylyan  
       Jul 30, 2019
    1,本机多次刷新看下公网 ip 是否更换,一般内网网关设置都是源 ip+目的 ip 端口为同一个连接,不会切换 ip
    2,写日志,打 log
    3,pppoe 运营商为释放资源,一般会隔几天需重新拨号更换公网 ip,重拨也是一俩分钟的事情,一般不会存在这种问题
    autogen
        10
    autogen  
       Jul 30, 2019
    丢失什么类型的数据? 用户发送的请求后台日志没有搜到,还是数据在 db 里丢了?
    reus
        11
    reus  
       Jul 30, 2019
    一个 print 就能确定的事情,还要发帖……
    ninechi
        12
    ninechi  
    OP
       Jul 30, 2019
    @reus 哈哈哈,不懂就要问
    ninechi
        13
    ninechi  
    OP
       Jul 30, 2019
    @autogen int 型,估计是在数据库丢失的。前端 js 有判断必填项,否则不能提交
    ninechi
        14
    ninechi  
    OP
       Jul 30, 2019
    @yylyan 好的,谢谢
    ninechi
        15
    ninechi  
    OP
       Jul 30, 2019
    @encro 估计第 3、4 点的概率大。系统日志有查了没有报错
    ninechi
        16
    ninechi  
    OP
       Jul 30, 2019
    @arrow8899 网络的管理不在我这边,我去找网络工程师问问
    ninechi
        17
    ninechi  
    OP
       Jul 30, 2019
    @lcy630409 好的,谢谢指点
    ninechi
        18
    ninechi  
    OP
       Jul 30, 2019
    @GuangXiN 受教了,谢谢
    ninechi
        19
    ninechi  
    OP
       Jul 30, 2019
    @MonoLogueChi 了解了,受教了,谢谢
    ninechi
        20
    ninechi  
    OP
       Jul 30, 2019
    @arthas2234 好的,谢谢
    ninechi
        21
    ninechi  
    OP
       Jul 30, 2019
    @Sornets 增删改都有事务
    ninechi
        22
    ninechi  
    OP
       Jul 30, 2019
    @fishlium 好的,谢谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1036 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 18:59 · PVG 02:59 · LAX 11:59 · JFK 14:59
    ♥ Do have faith in what you're doing.