goc
goc copied to clipboard
在1.3.9的版本中,通过k8s启动的定时任务服务,在执行完成后,pod节点被删除,但是goc list里的实效ip没有被删除
ip 不会主动删除,需要手动清除, goc remove
设计上确实希望退出时清理IP。这里如果实际没有,那就可能是有bug。
是否可以帮忙调试下呢?
- 首先看看退出时,被测程序是否打印了这行log: https://github.com/qiniu/goc/blob/master/pkg/cover/instrument.go#L299
- 同时看看goc server这一侧,是否接收到remove的情况,代码实现在这里: https://github.com/qiniu/goc/blob/master/pkg/cover/instrument.go#L262
信息越足,越方便我们定位问题。谢谢~ @susanaochaonan
@CarlJi 程序自己退出(无论正常或异常)不会有 signal。
使用 os/signal 也有缺点,用户程序原有的 signal 可能会比注入的 signal 先执行退出,导致 deregister 失败。
根本原因是 Go 里面没有提供 atexit 行为,见讨论,所以没有一种万全的方法来做全局的 "catch"。并发情况下一种全局的退出兜底方案是不存在的。
@CarlJi 程序自己退出(无论正常或异常)不会有 signal。
使用 os/signal 也有缺点,用户程序原有的 signal 可能会比注入的 signal 先执行退出,导致 deregister 失败。
根本原因是 Go 里面没有提供 atexit 行为,见讨论,所以没有一种万全的方法来做全局的 "catch"。并发情况下一种全局的退出兜底方案是不存在的。
部分场景有效也是好的。我们能明确目前方案的局限就好。
当goc服务停止重启后,如果有服务在goc停止时间内停止了,将会出现list有无效ip的问题 用的方式是在profile --force指令里判断是否清理,再加了一个定时任务的方式 发现在建立连接时好像没有定义超时时间
当goc服务停止重启后,如果有服务在goc停止时间内停止了,将会出现list有无效ip的问题 用的方式是在profile --force指令里判断是否清理,再加了一个定时任务的方式 发现在建立连接时好像没有定义超时时间
"建立连接时好像没有定义超时时间" 这里是否可以具体下? @zhanglianxin123
当goc服务停止重启后,如果停止结束,将出现有登录ip的问题用的方式是在配置文件中——强制指令里判断是否清理,还有一个定时任务的方式发现在建立连接时好像没有超时时间
“建立连接时好像没有超时时间”这里是否可以具体下?@zhanglianxin123
就是在cover.NewWorker(addrInfo).Profile(cover.ProfileParam{})这里不是需要建立连接吗,然后没看到timeout的设置
fixed at #321