新手问题,如何解决用gin做的api接口经常无响应?

biolt · · 4471 次点击 · 开始浏览    置顶

用gin做了一些api接口,经常运行中挂掉,处于访问无响应的状态,只能重启解决。用netstat -ano查看端口状态,处于CLOSE_WAIT。用wireshark监测确实可以看到有访问进来,但是gin没有相应。这些api有些是访问数据库返回结果的,有些是访问其它外部接口再返回结果的。单独每个api都用postman测试过几千次,并无逻辑问题。但就是运行中偶发变成无响应状态,无响应状态时数据库无死锁(排除数据库问题)。起初我猜测是不是访问其它外部接口超时所致,后来访问外部接口加入了超时5秒的限制,无效。后来猜测是gin自身未设置超时,于是改成如下启动参数 &http.Server{ Addr: address, Handler: router, ReadTimeout: 10 * time.Second, WriteTimeout: 10 * time.Second, MaxHeaderBytes: 1 << 20, } 仍然无效。请问在api中访问其它外部接口有什么需要注意的地方?是否会引起gin自身无响应?如何能让gin在api请求失败后超时不影响其它访问? 求指教,新手拜谢 ![代码.png](https://static.golangjob.cn/230111/c900447c0e802a62880fd2afc44c9ce2.png) 下面是对外访问接口时候,使用的get,post方法,加了5秒超时 ![get.png](https://static.golangjob.cn/230115/bd7b8ebb9c266ab98c1a6d64b291d18e.png) ![post.png](https://static.golangjob.cn/230115/ccd673eb6077707076ead82851dec9a4.png)

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

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

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