Etcd租约续期的问题

weixin_38065208 2019-09-20 10:55:21
---------------
最近在用Etcd做服务注册和发现的时候发现了一些问题,一直没有头绪,希望各位大佬给点建议,下面直接上代码(逻辑代码已删除)
```golang
resp, err := sdk.client.Grant(context.TODO(), 60)
if err != nil {
log4.Info(" createServerInfo %s Grant error [%v]", pull_path, err)
return err
}

_, err = sdk.client.Put(context.TODO(), pull_path, string(data), etcd.WithLease(resp.ID))
if err != nil {
log4.Info("createServerInfo %s Put error [%v]", pull_path, err)
return err
}

ctx, cancelFunc := context.WithCancel(context.TODO())
ch, err := sdk.client.KeepAlive(context.TODO(), resp.ID)
if err != nil {
log4.Info(" createServerInfo %s KeepAlive error [%v]", pull_path, err)
return err
}
```

我对`KeepAlive`返回的channel做了监听,如果channel关闭会重新注册该路径,但是做压测是时候发现,在服务注册量很大的时候(>1W+),这个channel会一直频繁被关闭,导致服务一直重新注册~ 请问大家有什么解决办法嘛
...全文
300 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38094055 2019-09-20
  • 打赏
  • 举报
回复
keepalive请求过多,导致网络IO阻塞,在firsttimeout为5秒的情况下无法正常返回KeepAliveResponse,将ETCD 客户端里的超时时间设置高点就可以了

473

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧