Open zhangchengtan opened 1 year ago
1 问题不大 2 在服务器出现异常宕机时,如果快速恢复服务器,会出现二次故障, 没懂?
@ruanshudong 第二点:我们使用的nodejs开发的,在服务器恢复时,会出现RPC到故障服务器请求超时,持续1分钟左右,实际服务器又是启动成功的。第二点配置有什么问题不?
第二点会加大数据库和主控的压力, 如果数据库配置还可以, 也无所谓 但是按说服务器挂了, 请求不会过去啊, 持续1分钟,是每个请求都错误, 还是个别请求去访问挂的服务器?
把服务到主控的刷新时间缩短看看
@ruanshudong 我使用的ngrinder模拟接口测试(我们是模拟轮询用户跑接口流程),TPS从6000下降到0,到负载到这个服务器的玩家就请求超时(我们超时是30S)。你的说的是调整loadObjectsInterval1=5参数?
改模板里面的refresh-endpoint-interval=60000
服务器是挂了, 端口连接拒绝还是什么现象, 这个时候telnet挂的服务器是什么现象?
1.我们使用云数据库性能应该还可以; 2.tarsframe版本是2.4.9,比较早版本; 3.loadObjectsInterval1=10, LeastChangedTime1=30,queryInterval=30,querylesttime=60这样参数配置是否是预期是宕机后75秒后服务器恢复,正常不会有问题;
efresh-endpoint-interval 刷新我们设置的是3S
端口连接拒绝还是什么现象, 这个时候telnet挂的服务器是什么现象? ====== 这个没试过,异常时我有上服务器看端口是已监听的,这个后面内网我们在确认下这个点。 我按现配置nodeTimeout=45,nodeTimeoutInterval=15,loadObjectsInterval1=10, LeastChangedTime1=30,queryInterval=30,querylesttime=60,宕机后请求TPS恢复正常后,等1分钟再重启是正常。但是之前时间调整到5S,跟恢复后TPS会到0的问题我还是没理清楚(还有个现象通过关闭容器时是没这个问题(docker stop命令),通过关机命令就有这个问题shutdown -h now )。
能把现象完整描述一遍?
背景:对容器关闭,服务器宕机灾演,命令docker stop(关闭容器) 与shutdown -h now(关闭服务器) 灾演客户单脚本:测试脚本是ngrinder,测试是轮询一组用户进行模拟接口流程测试 灾演服务端框架:四台服务器,一台tarsmaster 一台tarsslave 2台tarsnode(故障是指操作2台tarsnode) 服务的开发语言:go+nodejs
默认配置下进行测试结果: 1.模拟2种故障后出现5分钟左右TPS由6000下降到0, 2.模拟服务器宕机时在3分钟后恢复服务器,出现五分钟TPS下降到0;(出现的是请求超时,只有nodejs的服务servant出现问题,后面几个测试恢复都只有nodejs部分请求有超时) 3.容器关闭恢复未出现问题
第一次调整:
a.调整tarsregister模板: nodeTimeout=45, nodeTimeoutInterval=15, queryInterval=30, querylesttime=150
b.tarsnode模板:synStatInterval=30
c.tars.default模板:refresh-endpoint-interval=3000,async-invoke-timeout=30000
1.模拟2种故障后出现45S-1分钟左右TPS由6000下降到0;
2.模拟服务器宕机时在3分钟后恢复服务器,出现45S-1分钟TPS下降到0;(不知具体原因,怀疑slave或者master的register更新业务服务的状态有问题)
3.容器故障恢复未出现问题
第二次调整(第一次基础上) a.调整tarsregister模板: loadObjectsInterval1=5, LeastChangedTime1=5 1.模拟2种故障后出现45S-1分钟左右TPS由6000下降到0, 2.模拟服务器宕机后待TPS恢复到6000,1分钟后恢复服务器,出现45S-1分钟TPS下降到0;(不知具体原因,怀疑slave或者master的register更新业务服务的状态有问题) 3.容器故障恢复未出现问题。
第三次调整(第二次基础上)
a.调整tarsregister模板: loadObjectsInterval1=10, LeastChangedTime1=30, queryInterval=30, querylesttime=60
1.模拟2种故障后出现45秒左右TPS由6000下降到0;
2.服务器宕机故障后TPS恢复6000后一分钟重启服务器未出现问题;
3.容器故障恢复未出现问题。
都是nodejs的有问题, go的没问题?
是的,故障时是go、nodejs都有问题,恢复时只有nodejs服务的servant请求超时(我们有16个http节点我统计三台的超时日志都是nodejs的,nodejs跟go接口占比在2:1左右)。
都是http协议, 不是tars协议的服务?
架构是http+后端业务,服务间通讯都是tars协议的。
nodeTimeout=45, nodeTimeoutInterval=15 把这两个时间调低, 不过目前最低是15秒, 不能再低了, 调成15秒, 按照描述是15后恢复, 你试一试
模拟服务器宕机后待TPS恢复到6000,1分钟后恢复服务器,出现45S-1分钟TPS下降到0; 这个我有点不理解, 恢复以后, 然后还会出现tps下降?
嗯 这个我后面找时间试下,请教下,恢复后还出现TPS到0这种情况具体原因是啥有思路吗?
目前看起来容器化以后, 似乎关机会有问题, 这个问题我近期专项看一下
好的 谢谢大佬,这个是必现的有需要艾特我
你这里蛮奇怪就是, 客户端也有屏蔽逻辑, 连不上会自己屏蔽的, 怎么感觉都没生效
1.项目中tarsnode节点数在一千个节点以内,希望在tarsnode节点出现异常及时尽早被主控发现,tars.tarsregistry配置模板参数文件中nodeTimeoutInterval配置保护是15S,目前我的配置是nodeTimeout=45,nodeTimeoutInterval=15,根据项目情况希望重新编译调小这两值到nodeTimeout=15,nodeTimeoutInterval=5,这样调整会有其他问题或风险不,或者有其他建议不? 2.项目tarsframe使用master、多slave架构,在服务器出现异常宕机时,如果快速恢复服务器,会出现二次故障。问题是在恢复期间会被分配到故障服务器节点,导致RPC超时。目前我的处理是loadObjectsInterval1=10, LeastChangedTime1=30,queryInterval=30,querylesttime=60,在故障后至少100S去恢复。我中间有尝试loadObjectsInterval1,LeastChangedTime1调整到5,但是还是出现二次故障,大佬们帮忙看下可能是什么原因,分析下这几个参数关联?