背景
服务端由第三方部署了一个基于 darknet
(一个较为轻型的完全基于C与CUDA的开源深度学习框架)的识别算法服务,通过 Flask
的 Web
服务对业务服务暴露 API
接口。作为测试,一开始是直接通过 python3 app.py
的命令行启动的服务,然后在 Nginx
处通过反向代理过来的。
可是在通过前端页面调用算法接口进行测试时,出现了请求超时的错误:504,GateWay Timeout。
排查原因
因为从前端浏览器中可以看出,是从 Nginx
处返回的超时错误,那么直接去看 Nginx
的错误日志: tail -f error.log
。
什么,连接被拒绝??
可是直接访问算法服务的 API
是可以返回结果的(但是响应真的比较慢,大约需要1分半的时间才会返回结果),为什么通过 Nginx
反向代理之后就访问不了了呢?
经过仔细分析,大胆地猜测是原算法服务的 API
接口返回得太慢,导致 Nginx
直接断开了连接,进而向前端返回了错误。
解决方法
要想办法调整下 Nginx
相关的超时配置,经过面向百度编程后,哼哼~找到了我们需要修改的配置项: proxy_read_timeout
( Nginx
服务器接收被代理服务器数据超时时间,单位秒,规定时间内 Nginx
服务器没收到数据,则超时)。
proxy_read_timeout 120;
Note: 这里将 Nginx
接收被代理服务器数据超时时间改为了120s,实际可根据需要调整(在 Nginx
配置文件的 http
块中)。
Reference
- https://blog.csdn.net/weixin_42942557/article/details/126894236
If you have any questions or any bugs are found, please feel free to contact me.
Your comments and suggestions are welcome!