用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)