天魔恶使 2019-08-22 15:27 采纳率: 0%
浏览 540

nginx负载转发,导致重复插入问题

nginx做负载均衡

当一个插入操作被其中一台服务执行时,刚插入数据库后,服务立刻停止。
nginx会将该请求转发给另外一台服务器执行,导致数据被重复插入。
有没有什么好的方法,可以解决这种场景问题。谢谢。

  • 写回答

1条回答

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-25 19:19
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/1005865
    • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Nginx配置负载均衡与解决跨域问题
    • 除此之外, 这篇博客: nginx负载均衡,一次调用多次响应问题中的 问题分析:虚拟机配置好负载均衡后,在主机上启动服务调用后,后台查看日志能看到有2台服务均被调用。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      初步判断应该是接口报错或者接口返回慢,导致触发nginx超时转发机制。由于接口在单体服务上调用过,接口是通的,而且1s以内是可以返回的,所以上面2中情况排除。

      好吧,既然找不到原因,那就从nginx配置上想办法,于是我添加了一些参数:

      Location下增加

      porxy_connect_timeout 600;
      porxy_read_timeout 600;
      porxy_send_timeout 600;

      在server节点下增加

      keepalive_timeout 600;

      超时时间600s,我不信还有超过5分钟的接口(几乎没有人可以忍受),想来这样应该可以了,但是现实很残酷。

      经过多轮的修改参数,重新加载,调用…

      还是请求2次(nginx就配了2台服务,我增加了一台,怀疑是每台调用一次,但还是调用2次)。上网一顿搜,参数一顿改,一番操作下来还是不行。好吧,我承认我当时已经有点焦躁了。。。

      后来我冷静下来,想到了还有个重要的地方没有看,那就是nginx的报错日志,也就是开头的那个截图。网上一查,是http版本的问题,location添加参数:

      proxy_http_version 1.1;

      问题解决。

       


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler