go-micro 调用接口408或500问题排查

舞林 · · 2297 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

今日在家里电脑(windows 10)测试go-micro时发现github.com/micro/examples/service居然出现请求不到的情况,出现408或500错误
本地环境go version go1.12.6 windows/amd64
protoc
protoc-gen-go
protoc-gen-micro
需要用到的工具链都是最新的

windows 10环境下测试了很多次都是同样的错误,很奇怪
以前也在同一台电脑上测试都是正常的,没有出现过问题啊
猜测有可能是不同版本proto又差异的问题,先重新生成proto协议文件,执行

protoc  --micro_out=. --go_out=. greeter.proto

生成后再测试还是同样问题,看来问题不在这里
然后编译成linux版二进制文件,放到下虚拟机下Ubuntu中执行,是可以调用成功的
说明代码是没问题的,可能是windows 10环境哪里出现问题了

windows环境下
service执行如下
service执行

client执行如下
client执行

默认情况下micro使用的服务发现是mdns,无需任何配置,
执行micro web看下具体信息
micro web

可以看到,greeter确实是注册上了,那我们直接在界面调用一下试试
页面调用

还是一样的结果,那在详细看下服务注册信息
注册信息

也可以在命令行执行

micro get service greeter

注册信息2

可以看到注册的服务发现是mdns,但是这个ip地址有些奇怪,
我本地局域网的IP是192.168.31.x,他怎么会注册到10网段去呢,怪不得调用一直timeout
先看看本地的网络连接信息吧
网络连接

启用的几个网络连接中,禁用的不用管,另外4个分别是
SSTAP 1 安装公司vpn后产生的,网络安全原因,连入公司vpn需安装vpn软件并插入usb key
vEthernet (Default Switch) 安装docker后产生的,172.17网段
WLAN 2 电脑上网的无线网卡,192.168.31.x网段
以太网 3 virtualbox虚拟机网卡,192.168.56.x网段

看起来SSTAP 1 最可疑了,禁用此网卡后重新启动service,在观察服务注册
服务注册3

ip变成了192.168.56.1 ,看来是走的【以太网 3】网络,调用服务试一下
图片描述

调用成功了,micro web页面测试也同样成功
后面测试吧服务器注册换成consul,启动服务和调用时加上--registry=consul测试,也是同样的情况
所以造成这个问题的原因就是go-micro默认使用的网络连接问题了,只要将有问题的禁用掉即可
那不方便禁用网络连接的情况下怎么解决呢,只需要指定--server_address即可,如下

go run main.go --server_address=localhost:8999

经测试不禁用网络连接的情况下,指定--server_address,服务也可正常调用

micro有很多参数可以通过命令行或代码中option来设置,具体可以micro -h 查看


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

本文来自:Segmentfault

感谢作者:舞林

查看原文:go-micro 调用接口408或500问题排查

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

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