Closed georgexsh closed 2 years ago
版本:2.15.0 复现方式:
urllib3.connectionpool
DEBUG
bucket.head_object(key)
urllib3.connectionpool DEBUG Starting new HTTP connection ...
原因是 head_object() 方法中没有调用 Response.read() 导致连接未被正常关闭,长时间运行使得进程文件描述符过多崩溃。
head_object()
Response.read()
可能的修复方法:
主动调用 resp.read() https://github.com/aliyun/aliyun-oss-python-sdk/blob/0bd58efd3618348042e3d3b36ee3562a4df20a19/oss2/api.py#L951
resp.read()
对 HEAD 等类型请求不要设置 stream=True https://github.com/aliyun/aliyun-oss-python-sdk/blob/0bd58efd3618348042e3d3b36ee3562a4df20a19/oss2/http.py#L47
HEAD
stream=True
fix in d36d799c1c7087190bf73e1ee7208e90dbe4be46
@huiguangjun thanks!
版本:2.15.0 复现方式:
urllib3.connectionpool
日志级别设置为DEBUG
。bucket.head_object(key)
。urllib3.connectionpool DEBUG Starting new HTTP connection ...
日志,同时可见进程对外 TCP 连接数短时间可达数百。原因是
head_object()
方法中没有调用Response.read()
导致连接未被正常关闭,长时间运行使得进程文件描述符过多崩溃。可能的修复方法:
主动调用
resp.read()
https://github.com/aliyun/aliyun-oss-python-sdk/blob/0bd58efd3618348042e3d3b36ee3562a4df20a19/oss2/api.py#L951对
HEAD
等类型请求不要设置stream=True
https://github.com/aliyun/aliyun-oss-python-sdk/blob/0bd58efd3618348042e3d3b36ee3562a4df20a19/oss2/http.py#L47