记一次处理grpc bug过程

18393910396 · · 2890 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

## 1: 问题描述: 项目正常使用,半年没有更新;进程重启后一个grpc依赖服务突然失败,报错信息如下: ```go {"id":"go.micro.client","code":500,"detail":"none available","status":"internal server error"} ``` ## 2: 根据报错信息排查 思考:(1)项目代码一直没有改动,2个项目之间依赖的服务报错. 通过搜索报错,猜测是服务注册有问题; (2)想通过consul webUI来查看服务节点状态,但由于各种问题(nginx等配置有问题).改用命令行查看 (3)curl http://127.0.0.1:8500/v1/agent/checks ,注册地址自己修改 (4) 通过consul查看服务节点及其状态,发现服务注册有问题,证实上面的猜测 (5) 思考? 项目代码一直没有动,服务注册有问题,可能是grpc包更新的问题,查看https://github.com/micro/go-grpc (6) github查看包更新了,根据提示使用新的包https://github.com/micro/go-micro (7) 测试服测试通过,服务正常了.可是发到线上发现报错,"Server register error: Put http://127.0.0.1:8500/v1/agent/service/register: dial tcp 127.0.0.1:8500: connect: connection refused" (8)线上服务register address 怎么是默认的127.0.0.1:8500? ## 3:通过github.com/micro/go-micro/registry/consul 添加服务地址,测试通过. 代码如下: ```go // Get 获取服务接口 func Get(registries ...string) micro.Service { reg := consul.NewRegistry( registry.Addrs(registries...), ) s := micro.NewService( micro.Name(config.Get("SERVICE.NAME")), // micro.Registry(registry.NewRegistry(registry.Addrs(registries...))), micro.Registry(reg), micro.RegisterTTL(time.Second*6), micro.RegisterInterval(time.Second*3), ) return s } // Start 启动服务器 func Start(registries ...string) error { s := service.Get(registries...) s.Init() proto.RegisterAlmsConstructHandler(s.Server(), new(impl.Impl)) err := s.Run() return err } ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2890 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传