用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请求失败后超时不影响其它访问?
求指教,新手拜谢
下面是对外访问接口时候,使用的get,post方法,加了5秒超时