Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请教下服务器宕机与恢复时配置优化问题 #129

Open
zhangchengtan opened this issue Sep 14, 2022 · 21 comments
Open

请教下服务器宕机与恢复时配置优化问题 #129

zhangchengtan opened this issue Sep 14, 2022 · 21 comments

Comments

@zhangchengtan
Copy link

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,但是还是出现二次故障,大佬们帮忙看下可能是什么原因,分析下这几个参数关联?

@ruanshudong
Copy link
Contributor

1 问题不大
2 在服务器出现异常宕机时,如果快速恢复服务器,会出现二次故障, 没懂?

@zhangchengtan
Copy link
Author

@ruanshudong 第二点:我们使用的nodejs开发的,在服务器恢复时,会出现RPC到故障服务器请求超时,持续1分钟左右,实际服务器又是启动成功的。第二点配置有什么问题不?

@ruanshudong
Copy link
Contributor

第二点会加大数据库和主控的压力, 如果数据库配置还可以, 也无所谓
但是按说服务器挂了, 请求不会过去啊, 持续1分钟,是每个请求都错误, 还是个别请求去访问挂的服务器?

@ruanshudong
Copy link
Contributor

把服务到主控的刷新时间缩短看看

@zhangchengtan
Copy link
Author

@ruanshudong 我使用的ngrinder模拟接口测试(我们是模拟轮询用户跑接口流程),TPS从6000下降到0,到负载到这个服务器的玩家就请求超时(我们超时是30S)。你的说的是调整loadObjectsInterval1=5参数?

@ruanshudong
Copy link
Contributor

改模板里面的refresh-endpoint-interval=60000

服务器是挂了, 端口连接拒绝还是什么现象, 这个时候telnet挂的服务器是什么现象?

@zhangchengtan
Copy link
Author

1.我们使用云数据库性能应该还可以;
2.tarsframe版本是2.4.9,比较早版本;
3.loadObjectsInterval1=10, LeastChangedTime1=30,queryInterval=30,querylesttime=60这样参数配置是否是预期是宕机后75秒后服务器恢复,正常不会有问题;

@zhangchengtan
Copy link
Author

efresh-endpoint-interval 刷新我们设置的是3S

@zhangchengtan
Copy link
Author

端口连接拒绝还是什么现象, 这个时候telnet挂的服务器是什么现象?
====== 这个没试过,异常时我有上服务器看端口是已监听的,这个后面内网我们在确认下这个点。
我按现配置nodeTimeout=45,nodeTimeoutInterval=15,loadObjectsInterval1=10, LeastChangedTime1=30,queryInterval=30,querylesttime=60,宕机后请求TPS恢复正常后,等1分钟再重启是正常。但是之前时间调整到5S,跟恢复后TPS会到0的问题我还是没理清楚(还有个现象通过关闭容器时是没这个问题(docker stop命令),通过关机命令就有这个问题shutdown -h now )。

@ruanshudong
Copy link
Contributor

能把现象完整描述一遍?

@zhangchengtan
Copy link
Author

背景:对容器关闭,服务器宕机灾演,命令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.容器故障恢复未出现问题。

@ruanshudong
Copy link
Contributor

都是nodejs的有问题, go的没问题?

@zhangchengtan
Copy link
Author

是的,故障时是go、nodejs都有问题,恢复时只有nodejs服务的servant请求超时(我们有16个http节点我统计三台的超时日志都是nodejs的,nodejs跟go接口占比在2:1左右)。

@ruanshudong
Copy link
Contributor

都是http协议, 不是tars协议的服务?

@zhangchengtan
Copy link
Author

架构是http+后端业务,服务间通讯都是tars协议的。

@ruanshudong
Copy link
Contributor

nodeTimeout=45, nodeTimeoutInterval=15 把这两个时间调低, 不过目前最低是15秒, 不能再低了, 调成15秒, 按照描述是15后恢复, 你试一试

@ruanshudong
Copy link
Contributor

模拟服务器宕机后待TPS恢复到6000,1分钟后恢复服务器,出现45S-1分钟TPS下降到0;
这个我有点不理解, 恢复以后, 然后还会出现tps下降?

@zhangchengtan
Copy link
Author

嗯 这个我后面找时间试下,请教下,恢复后还出现TPS到0这种情况具体原因是啥有思路吗?

@ruanshudong
Copy link
Contributor

目前看起来容器化以后, 似乎关机会有问题, 这个问题我近期专项看一下

@zhangchengtan
Copy link
Author

好的 谢谢大佬,这个是必现的有需要艾特我

@ruanshudong
Copy link
Contributor

你这里蛮奇怪就是, 客户端也有屏蔽逻辑, 连不上会自己屏蔽的, 怎么感觉都没生效

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants