Nginx转发时的重复订单问题

本文探讨了在使用Nginx作为负载均衡器时遇到的重复订单问题,由于订单服务与门店系统的超时时间不匹配,Nginx会因超时而重新派发请求。通过调整Nginx的proxy_read_timeout和proxy_send_timeout属性至600秒,以确保超过订单服务的超时时间,从而避免重复订单的发生。保留proxy_connect_timeout的默认设置,以保证连接时间的合理性。
摘要由CSDN通过智能技术生成

当我们使用Nginx作为负载均衡使用,使其可以在cluster的不同节点之间进行分发的时候,出现了重复订单问题。重复的订单在不同的节点上各有一个,并且时间间隔相差1分钟,因此是Nginx的超时配置导致的毫无疑问。

当然,默认情况下的Nginx的超时设置理论上来说是合理的,只不过我们的订单服务需要外接门店系统,受限于门店系统不得不把订单系统的超时时间设置的超长。

这当然就导致了--如果没有修改Nginx的超时配置的话--Nginx认为第一次派发出去的节点出了问题,然后向其他的节点重新派发。

 

修改的关键之处是使Nginx允许的超时时间超过订单服务自己允许的超时时间。

 

关键属性配置:
   proxy_read_timeout 600;
   proxy_send_timeout 600;

 

而proxy_connect_timeout属性保持默认就好,如果只是处理时间长,那连接时间依旧应该很短,2s足以。

 

以下作为示例:

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
	server_names_hash_bucket_size 1024;
    #log_format  main  '
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值