分布式服务超时问题

最近发现有一次启动mongos需要特别久,查明原因后发现是超时时间过长导致。

因为后端三台configdb中的一台死机,mongos启动时会去分别连接这几台configdb,在connect这台机器的时候,由于机器无响应,导致超时后才能返回,这样启动时间超过了一分钟。而且在查询mongos的时候,有些命令(show dbs)也会阻塞很久,因为要同步从configdb取结果。

解决办法可以将操作系统的/proc/sys/net/ipv4/tcp_syn_retries改为0,这样当连接tcp连接时,发送的sync无响应,不会再重试,这样超时时间就是3s。或者修改mongos源码,将超时时间改短。

在分布式服务系统中,后端机器经常会有多台,原则上一台机器死机,是不影响服务的。但由于有时候将超时时间设置过长,在同步访问后端的机器中就会出现超时问题,这样即使一台机器挂掉,对服务会对有影响。

如果网络条件比较好,实际上这些超时时间是可以设置很短的,例如50毫秒。当机器出问题后,对整体服务影响不大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值