## 一、连接池配置陷阱****
典型问题:未设置pool_maxsize导致连接泄漏,或配置过大触发服务器拒绝。
避坑指南:
1. 必须显式配置Session对象的连接池参数,默认值(如requests的10)可能不满足高并发需求。
2. 推荐公式:pool_maxsize = min(100, 服务器并发限制*1.5),例如Nginx默认50连接时设为75。
3. 监控connectionpool日志,发现Max retries exceeded错误时优先检查连接池是否耗尽。
二、异步编程的常见误区****
典型问题:在协程中混用同步requests库,导致事件循环阻塞。
避坑指南:
1. 异步环境必须使用aiohttp等原生协程库,同步库需通过run_in_executor封装。
2. 警惕async with session.get()未正确关闭连接,应使用try/finally确保资源释放。
3. 批量请求时控制并发数,过高的limit=500可能引发操作系统文件描述符耗尽错误。
三、压缩传输的隐性成本****
典型问题:强制压缩二进制数据(如图片)反而增加CPU开销。
避坑指南:
1. 仅对Content-Type: application/json等文本类型启用压缩,通过Accept-Encoding: gzip声明支持。
2. 测试发现压缩1MB图片仅减少3%体积,但耗时增加40%,得不偿失。
3. 响应体较大时优先使用流式传输(stream=True),避免内存爆炸。
四、超时设置的平衡艺术****
典型问题:未设置超时导致线程永久挂起,或设置过短引发频繁重试。
避坑指南:
1. 必须同时设置connect_timeout和read_timeout,推荐值分别为5s和30s。
2. 网络不稳定环境启用指数退避重试,但总重试次数不超过3次。
3. 监控超时错误类型,区分是DNS解析失败(connect_timeout)还是服务端处理超时(read_timeout)。
实战数据:某金融系统通过规避上述陷阱,将API调用异常率从12%降至0.7%,QPS稳定性提升3倍。建议结合业务场景进行参数调优,避免盲目追求性能指标。