Flask+Waitress服务Post请求响应时长突增问题排查咨询
问题背景与现象
我在项目中需要将600x600分辨率、约700kB的PNG图片以字节形式上传至接口并处理,要求严格控制响应时长。当前基于Flask搭建单接口服务,使用Waitress部署。
核心问题:接口响应时长偶尔会突然提升一个数量级,可能引发超时类严重错误。通过cProfile分析Post请求发现,时长突增时,_socket.socket的sendall和recv_into方法耗时远超正常水平:
正常情况性能数据
ncalls tottime percall cumtime percall filename:lineno(function) 2 0.000 0.000 0.000 0.000 {method 'sendall' of '_socket.socket' objects} 1 0.004 0.004 0.004 0.004 {method 'recv_into' of '_socket.socket' objects}
突增情况性能数据
ncalls tottime percall cumtime percall filename:lineno(function) 2 0.008 0.004 0.008 0.004 {method 'sendall' of '_socket.socket' objects} 1 0.012 0.012 0.012 0.012 {method 'recv_into' of '_socket.socket' objects}
已尝试操作与补充信息
- 已提供可复现问题的代码(app.py、wsgi.py、send.py)
- 尝试设置
TCP_NODELAY套接字选项,但无效果
依赖版本
python==3.8.18 Flask==3.0.2 numpy==1.24.4 pillow==10.2.0 requests==2.31.0 waitress==3.0.0
性能测试结果
三次独立1000张图片测试的性能图表:
- 第一次测试图表
- 第二次测试图表
- 第三次测试图表
现咨询该突增现象的原因及解决办法。
内容的提问来源于stack exchange,提问作者M.Talarski
相关产品推荐
相关产品推荐

