分布式服务超时问题
2013-06-28 18:39
99 查看
最近发现有一次启动mongos需要特别久,查明原因后发现是超时时间过长导致。
因为后端三台configdb中的一台死机,mongos启动时会去分别连接这几台configdb,在connect这台机器的时候,由于机器无响应,导致超时后才能返回,这样启动时间超过了一分钟。而且在查询mongos的时候,有些命令(show dbs)也会阻塞很久,因为要同步从configdb取结果。
解决办法可以将操作系统的/proc/sys/net/ipv4/tcp_syn_retries改为0,这样当连接tcp连接时,发送的sync无响应,不会再重试,这样超时时间就是3s。或者修改mongos源码,将超时时间改短。
在分布式服务系统中,后端机器经常会有多台,原则上一台机器死机,是不影响服务的。但由于有时候将超时时间设置过长,在同步访问后端的机器中就会出现超时问题,这样即使一台机器挂掉,对服务会对有影响。
如果网络条件比较好,实际上这些超时时间是可以设置很短的,例如50毫秒。当机器出问题后,对整体服务影响不大。
因为后端三台configdb中的一台死机,mongos启动时会去分别连接这几台configdb,在connect这台机器的时候,由于机器无响应,导致超时后才能返回,这样启动时间超过了一分钟。而且在查询mongos的时候,有些命令(show dbs)也会阻塞很久,因为要同步从configdb取结果。
解决办法可以将操作系统的/proc/sys/net/ipv4/tcp_syn_retries改为0,这样当连接tcp连接时,发送的sync无响应,不会再重试,这样超时时间就是3s。或者修改mongos源码,将超时时间改短。
在分布式服务系统中,后端机器经常会有多台,原则上一台机器死机,是不影响服务的。但由于有时候将超时时间设置过长,在同步访问后端的机器中就会出现超时问题,这样即使一台机器挂掉,对服务会对有影响。
如果网络条件比较好,实际上这些超时时间是可以设置很短的,例如50毫秒。当机器出问题后,对整体服务影响不大。
相关文章推荐
- WCF服务访问超时的问题
- jeecg 分布式部署附件共享问题(linux下配置共享磁盘nfs服务)
- C#中分布式事务的超时处理问题
- 一个提供数据存储和查询服务的分布式中间件需要考虑的一般问题
- 关于调用WEB服务超时的问题
- 【分布式事务】微服务架构下的分布式事务问题
- C#中分布式事务的超时处理问题
- dubbo服务调用超时问题解决方案
- 使用nhmicro提供的micro-datasource嵌入式的解决微服务架构中分布式事务问题
- BLUENESSG 早一日受苦、早一日解决、早一日浴火重生 Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题
- C#中分布式事务的超时处理问题
- 线上服务依赖的tair服务随机性的短时大幅超时问题排查处理
- php中curl和soap方式请求服务超时问题的解决
- 用redis-cli连接redis服务超时问题
- datenode节点超时时间设置,Hadoop启动不正常,HDFS冗余数据块的自动删除,NameNode安全模式问题,ntp时间服务同步,机架感知配置
- C#中分布式事务的超时处理问题
- wcf服务配置以及解决超时问题
- dobbo 服务配置详解(解决超时重试问题)
- 微服务架构的分布式事务问题
- SpringCloud服务消费者第一次调用出现超时问题的解决方案